当前位置: 首页 > 知识库问答 >
问题:

异步方法发送消息

艾英范
2023-03-14

我正在将SpringWebSocket 4.2.4与sockjs和stomp一起使用,并试图在异步任务中从服务器向所有订阅者发送消息,但运气不佳

我的班级是:

public class MyClass{
    private timer;
    public MyClass(){
        this.timer = new Timer();
    }

    @Async
    public void myMethod(){
        timer.schedule(new MyReminder(), 1000);
    }

    @Async
    private class MyReminder extends TimerTask{

        @Autowired
        SimpMessagingTemplate messageingTemplate;

        @Override
        public void run(){
            messageingTemplate.convertAndSend("/app/subscribers","message");
        }
    }
}

但是订阅者没有得到消息

有什么帮助吗?我做错了什么:(

*编辑*

我的消息代理:

public void configureMessageBroker(MessageBrokerRegistry config){ 
    config.enableSimpleBroker("/topic","/myApp"); 
    config.setApplicationDestinationPrefixes("/myApp");
}

当我订阅时:

subscribe("myApp/someRoute") 

谢谢

**编辑2:**

谢谢你帮我解决这个问题:)

共有1个答案

郎鸿雪
2023-03-14

您可以这样做,但不能超过代理目的地。

请分享您的AbstractWebSocketMessageBrokerConfigure

通常我们这样做:

public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.setApplicationDestinationPrefixes("/app/")
            .enableSimpleBroker("/queue/", "/topic/");
}

经纪人不会处理所有这些/app/目的地。您只能在@SubscribeMapping的情况下订阅它们,这是来自客户机计划的请求-应答场景。

就跺脚而言,您的任务完全符合发布-订阅故事-主题

因此,您的订阅者(客户机)应该订阅代理上的某个主题,然后您可以简单地向它发送消息。

 类似资料:
  • 主要内容:1 invokeOneway单向发送,1.1 invokeOnewayImpl单向调用,2 sendMessageSync同步发送,2.1 invokeSync同步调用,3 sendMessageAsync异步发送消息,3.1 invokeAsync异步调用,3.2 onExceptionImpl异常处理,4 NettyClientHandler处理服务端消息,4.1 processResponseCommand处理响应,基于RocketMQ release-4.9.3,深入的介绍了P

  • 我有一个BE服务a,它正在使用假客户端向microservice B发送Rest JSON消息: 终点: Rest Endpoint正在向AWS Ses邮件或其他邮件提供商发送邮件。 问题是来自飞格的第一个呼叫可能需要5秒或更长时间。我需要使其异步,以便FE客户端不要等待邮件发送。 我如何可以使从飞度异步发出的Rest调用到超文本传输协议响应OK没有等待时间可以预期?是否有一些更好的解决方案来实现

  • 嗨, 谢谢你,也很抱歉西班牙语的命名,我知道这让阅读代码变得有点困难。

  • 本文向大家介绍C#实现异步发送邮件的方法,包括了C#实现异步发送邮件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现异步发送邮件的方法。分享给大家供大家参考。具体如下: 下面的代码可以实现异步发送邮件,等邮件发送出去后会自动调用回调函数,这样在发送邮件时就不会卡住程序不动了 希望本文所述对大家的C#程序设计有所帮助。

  • 如何在Kafka中发送同步消息 实现这一点的一种方法是设置properties参数 。 但是我想知道是否有一种甚至直接或替代的方式在Kafka中发送同步消息。(比如producer.sync发送(...)等等)。

  • 问题内容: 我有这样的表格: 我想异步发送这些数据,使用jQuery函数。 编辑:与解决方案: 问题答案: 看到: jQuery文档:发布 jQuery文档:序列化