Question

J'ai un JMS à l'écoute, et je dois prendre le message, de le manipuler et ensuite rediriger vers une page à l'aide de websocket.

Eh bien, je suis juste confus au sujet de la configuration, j'ai configuré le 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();
    }

Et ce qu'il devrait être correct, Alors, ma page est:

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);     
        });

Et la connexion fonctionne.

Maintenant Sur mon listener jms j'ai essayé d'envoyer un message de cette façon:

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

Mais ça ne fonctionne pas.Les questions sont:

  1. Comment envoyer un message?
  2. Où dois-je spécifier le point de fin (secondep) lorsque j'envoie un message?

Merci!!!!toute aide est appréciée!

Était-ce utile?

La solution

TestMessage();//<--- la pour envoyer le message ici

Non, il a pas à envoyer, parce que vous utilisez la méthode de la même classe, mais @SendTo rend votre ImporterListener en tant que proxy et Advice va travailler sur la méthode à partir d'un autre composant.

Vous devez injecter ce:

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

Et envoyer un message en utilisant que:

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

Où dois-je spécifier le point de fin (secondep) lorsque j'envoie un message?

Il est pour le @MessageMapping("/ws/secondep") sur certains POJO méthode de réception de message de la part de clients.Ce n'est pas pour l'envoi de la partie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top