java - 如何在 Spring Boot 中单独修改 channel 内每个接收者的每个代理消息?

标签 java spring-boot rabbitmq spring-websocket messagebroker

我正在向 channel 发送消息,但必须为每个客户端修改它。

有谁有这方面的经验吗?

最佳答案

给你。

Spring 为传入和传出 channel 提供拦截器。 因此,只需添加一个拦截器,您就可以捕获每条传入和传出的消息并执行您想做的任何操作。

首先是你的配置:

...

@Autowired
private InboundMessagesChannelInterceptor inboundMessagesChannelInterceptor;

@Autowired
private OutboundMessagesChannelInterceptor outboundMessagesChannelInterceptor;

@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
    registration.interceptors(inboundMessagesChannelInterceptor);
}

@Override
public void configureClientOutboundChannel(ChannelRegistration registration) {
    registration.interceptors(outboundMessagesChannelInterceptor);
}

...

和你的拦截器:

@Component
public class OutboundMessagesChannelInterceptor implements ChannelInterceptor {

    @Override
    public Message<?> preSend(Message<?> message, MessageChannel channel) {
        // modify your message as needed
        return message;
    }

}

就是这样。

关于java - 如何在 Spring Boot 中单独修改 channel 内每个接收者的每个代理消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56834604/

相关文章:

java - 如何将带有自定义 .properties 文件的 Spring Boot 应用程序部署到 AWS ElasticBeanstalk?

java - 超时后重新发送消息

java - 在 Spring boot Transaction 中以只读方式执行 RxJava observable?

java - 将 Maven 项目部署到 Tomcat 7,仍然得到 404

spring - 如何在 Spring AMQP 中使用拦截器

java - 通过 VPC 对等连接到 RDS 时出现 Spring Boot UnknownHostException

linux - Linux RHEL 上的 RabbitMQ 内部内存路径映射到另一个位置

java - Rabbit MQ - 为什么我的设置不向所有客户端提供消息?

java - Vaadin:按回车键后自动单击按钮

java - 如何在从对话框中获取输入后创建新卡