Вопрос

У меня есть слушатель JMS, и я должен взять сообщение, манипулировать им, а затем перенаправить его на страницу с помощью Websocket.

Ну, я просто запутался в конфигурации, я настроил WebsocketConfig:

@Configuration
@EnableWebSocketMessageBroker
@EnableScheduling
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
   @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic", "/queue");
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws/firstep/").withSockJS();
        registry.addEndpoint("/ws/secondep/").withSockJS();
    }
.

И это должно быть правильно, то моя веб-страница:

var socket = new SockJS("/myapp-web/api/ws/secondep/",undefined,options);
    var stompClient = Stomp.over(socket);
    stompClient.connect({
        company : "xxx"
    }, function(frame) {
        console.log('Connected: ' + frame);

          stompClient.subscribe('/topic/register', function(message){ 
            console.log('message: ' + message);     
          });

        stompClient.subscribe('/topic/update', function(message){ 
            console.log('message: ' + message);     
        });
.

и подключение работает.

Теперь на моем слушателе JMS я пытался отправить сообщение таким образом:

public class ImporterListener implements MessageListener {

    Logger logger = LoggerFactory.getLogger(ImporterListner.class);
    @SendTo("/topic/register")
    private String TestMessage() {
        return "TestMessage";
    }

    @Override
    public void onMessage(Message message) {
        logger.info("Request on message");
        if (message instanceof MapMessage) {
            MapMessage t = (MapMessage) message;
             TestMessage(); //<--- have to send the message here
.

Но это не работает. Вопросы:

  1. Как отправить сообщение?
  2. где мне нужно указать конечную точку (второйEP), когда я отправляю сообщение?
  3. Спасибо!Любая помощь ценится!

Это было полезно?

Решение

testmessage ();// <--- нужно отправить сообщение здесь

Нет, это не нужно отправлять, поскольку вы используете метод из того же класса, но @SendTo делает ваш GeneracodicTagcode, поскольку прокси и ImporterListener будет работать над способом только из другого компонента.

Вы должны ввести это:

@Autowired
@Qualifier("brokerMessagingTemplate")
private MessageSendingOperations brokerMessagingTemplate;
.

и отправьте сообщение, используя это:

brokerMessagingTemplate.convertAndSend("/topic/register", "TestMessage");
.

Где мне нужно указать конечную точку (вторые), когда я отправляю сообщение?

Для генеракодицетагкода на некотором методе POJO для получения сообщения от клиентов.Это не для отправки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top