質問

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. メッセージを送信するときにエンドポイント(2台目)を指定する必要がありますか?
  3. ありがとうございます!あらゆる助けが高く評価されています!

役に立ちましたか?

解決

TestMessage();// <---ここにメッセージを送信する必要があります

いいえ、同じクラスからメソッドを使用するため、@SendToがProxyおよびImporterListenerを別のコンポーネントからのみメソッドで動作します。

これを注入する必要があります。

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

を使用してメッセージを送信します。

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

メッセージを送信するときに終点(2台目)を指定する必要がありますか?

POJOメソッドがAdviceでは、クライアントからメッセージを受信することです。送信部品のためのものではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top