Domanda

Ho un listener JMS e devo prendere il messaggio, manipolarlo e quindi reindirizzarlo a una pagina usando il WebSocket.

Bene, sono solo confuso sulla configurazione, ho configurato il 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();
    }
.

E questo dovrebbe essere corretto, la mia pagina web è:

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

e la connessione funziona.

Ora sul mio ascoltatore JMS Ho provato a inviare un messaggio in questo modo:

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
.

Ma non funziona. Le domande sono:

    .
  1. Come inviare un messaggio?
  2. Dove devo specificare il punto finale (secondep) quando invio un messaggio?
  3. Grazie!Qualsiasi aiuto è apprezzato!

È stato utile?

Soluzione

.

TestMessage ();// <--- Devi inviare il messaggio qui

No, non ha da inviare, perché si utilizza il metodo dalla stessa classe, ma @SendTo semplifica il ImporterListener come proxy e Advice funzionerà sul metodo solo da un altro componente.

Dovresti iniettare questo:

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

e invia un messaggio usando quello:

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

.

Dove devo specificare il punto finale (secondep) quando invii un messaggio?

È per il @MessageMapping("/ws/secondep") su un metodo POJO per ricevere il messaggio dai clienti.Non è per la parte di invio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top