java – spring websockets:向脱机用户发送消息 – 消息代理中未排队的消息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – spring websockets:向脱机用户发送消息 – 消息代理中未排队的消息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1614字,纯文字阅读大概需要3分钟。
内容图文
![java – spring websockets:向脱机用户发送消息 – 消息代理中未排队的消息](/upload/InfoBanner/zyjiaocheng/724/55ac37b9198047839a05af2595669637.jpg)
我有一个使用消息代理(activemq)的spring和websockets的webapp.
这是我的配置类:
@Configuration
@EnableWebSocketMessageBroker
@EnableScheduling
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableStompBrokerRelay("/topic","/queue/");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/hello").withSockJS();
}
}
我有一个计划的任务,不断将消息推送到用户名“StanTheMan”:
@Scheduled(fixedDelay = 1000)
public void sendGreetings() {
HelloMessage hello = new HelloMessage();
hello.setContent("timeStamp:" + System.currentTimeMillis());
String queueMapping = "/queue/greetings";
template.convertAndSendToUser(
"DannyD",
queueMapping,
hello);
}
目前,如果用户没有通过websocket连接到服务器 – 他的所有消息都没有为他安排,他们只是丢弃了.每当他连接时 – 他都会收到新的消息.
我可以以任何方式将“convertAndSendToUser”消息“转发给离线用户”吗?我希望将已过期时间的邮件排入队列,以便以后再次连接并且过期时间未结束时可以推送脱机用户.
我怎么能实现这一目标?显然使用真正的消息代理(activemq)应该有助于实现这一点,但如何?
谢谢!
解决方法:
实际上,此功能仅可用于向(当前)连接的用户发送消息.
我们计划提供更好的方法来跟踪失败的消息(见SPR-10891).在此期间,您可以将UserSessionRegistry注入到@Scheduled组件中,并检查getSessionIds方法是否返回非空Set.这表明用户已连接.
一种替代方法可能是使用您自己的约定来为每个用户可以订阅的队列名称(可能基于他们的用户名或其他足够独特的东西),以便接收持久性消息. ActiveMQ STOMP page有一个关于持久消息和到期时间的部分.
内容总结
以上是互联网集市为您收集整理的java – spring websockets:向脱机用户发送消息 – 消息代理中未排队的消息全部内容,希望文章能够帮你解决java – spring websockets:向脱机用户发送消息 – 消息代理中未排队的消息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。