Spring boot:将消息推送到每个请求的特定主题

Posted

技术标签:

【中文标题】Spring boot:将消息推送到每个请求的特定主题【英文标题】:Spring boot: push message to specific topic for each request 【发布时间】:2020-04-01 23:55:02 【问题描述】:

我正在使用 pub sub 与 spring boot 的集成,我的配置类如下所示:

@Configuration
public class PubSubConfiguration 

    @Value("$spring.pubsub.topic.name")
    private String topicName;

    @Bean
    @ServiceActivator(inputChannel = "MyOutputChannel")
    public PubSubMessageHandler messageSender(PubSubTemplate pubsubTemplate) 
        return new PubSubMessageHandler(pubsubTemplate, topicName);
    

    @MessagingGateway(defaultRequestChannel = "MyOutputChannel")
    public interface PubsubOutboundGateway 
        void sendToPubsub(String attribute);
    


所以现在,我只调用了 sendToPubSub 方法,该方法将有效负载从我的应用程序添加到主题中,如下所示:

@Autowired
private PubSubConfiguration.PubsubOutboundGateway outboundGateway;

// used line in my code wherever is needed. 
outboundGateway.sendToPubsub(jsonInString);

以上代码仅适用于我从应用程序属性文件加载的一个主题。

但是现在我想让我的主题名称动态添加到messageSender中,该怎么做。

【问题讨论】:

【参考方案1】:

考虑创建一个BeanFactory 来生成一个给定主题名称的 PubSubMessageHandler Bean。 PubSubMessageHandler 还有一个 setTopic() 方法,可能有用。

【讨论】:

以上是关于Spring boot:将消息推送到每个请求的特定主题的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud Sleuth 在 spring-boot/spring cloud 升级后停止将 X-B3-TraceId 推送到 MDC

将消息推送到谷歌云发布订阅后如何返回对 webflux 端点的响应?

为啥当我尝试将我的 Spring Boot 应用程序推送到 heroku 时它返回“致命错误编译:无效目标版本:11”

Spring Webflux:将服务器发送事件推送给特定用户

我需要一个提示 - 是不是可以将消息推送到仅位于某些特定区域的 iphone(基于地理的通知)?

CUBA 平台将消息从后端推送到 UI