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

时间:2019-12-08 20:00:59

标签: java spring spring-boot google-cloud-pubsub spring-cloud-gcp

我正在使用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 个答案:

答案 0 :(得分:0)

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