获取Spring Broker中继在内部使用的stomp客户端
我试图在Spring中设置一个代理中继,RabbitMQ是代理。当所有事件都源于我的浏览器时,事情会按预期进行,但是,有时我会在服务器端动态生成事件。我还想将它们发送到RabbitMQ,以利用持久主题或消息的TTL之类的功能。据我所知,使用获取Spring Broker中继在内部使用的stomp客户端,spring,rabbitmq,spring-websocket,stomp,Spring,Rabbitmq,Spring Websocket,Stomp,我试图在Spring中设置一个代理中继,RabbitMQ是代理。当所有事件都源于我的浏览器时,事情会按预期进行,但是,有时我会在服务器端动态生成事件。我还想将它们发送到RabbitMQ,以利用持久主题或消息的TTL之类的功能。据我所知,使用SimpleMessageTemplate.convertAndSend()和convertAndSendToUser都会将事件发送到浏览器而不是代理 现在,我正在尝试创建一个新的stomp客户端到rabbitmq,并通过它发送事件。但我忍不住觉得有点不舒服。
SimpleMessageTemplate.convertAndSend()
和convertAndSendToUser
都会将事件发送到浏览器而不是代理
现在,我正在尝试创建一个新的stomp客户端到rabbitmq,并通过它发送事件。但我忍不住觉得有点不舒服。有没有一种方法可以控制Spring使用的stomp客户端并轻松转发我的消息?还是我在这里遗漏了什么
感谢您的帮助,谢谢 花了一段时间,但结果证明您不需要获得内部stomp客户端(实际上是Reactor Netty提供的内部TCP客户端)或类似的东西。以下是需要进行一点定制时需要执行的步骤:
- Spring使用
来配置代理,或者您可以扩展@EnableWebSocketMessageBroker
。我最终扩展了它,但没什么区别DelegatingWebSocketMessageBrokerConfiguration
- 在
中,使用注册表并启用stomp中继和重要部分:对于使用相同方法的注册表,添加configureMessageBroker(MessageBrokerRegistry registry)
。您可以获取stomp命令并根据需要对其进行处理。这个想法与Spring Intercetpors完全相同。在其中添加所需的标题 最终StompHeaderAccessor headerAccessor=StompHeaderAccessor.wrap(消息); StompCommand=headerAccessor.getCommand()ChannelInterceptors
MessageBuilder.createMessage(new byte[0], accessor.getMessageHeaders());
最后,您可以测试东西是否真的进入RabbitMQ管理控制台,以观察消息是否真的在发送