문제

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. 메시지를 보낼 때 끝점을 지정해야합니까?
  3. 고맙습니다!어떤 도움이 감사합니다!

도움이 되었습니까?

해결책

testmessage ();//-- 여기에서 메시지를 보내야합니다

아니요, 동일한 클래스에서 메소드를 사용하기 때문에 @SendTo를 사용하면 Proxy와 ImporterListener가 다른 구성 요소의 메소드에서만 작동합니다.

다음을 주입해야합니다.

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

해당 메시지를 보내십시오.

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

메시지를 보낼 때 끝점을 지정해야합니까?

일부 POJO 메소드의 PROJODICETAG 코드는 클라이언트로부터 메시지를 수신하는 것입니다.그것은 보내는 부분을위한 것이 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top