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



我正在使用 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中,如何做到这一点。

要覆盖默认主题,您可以使用 GcpPubSubHeaders.TOPIC 标头。

final Message<?> message = MessageBuilder
.withPayload(msg.getPayload())
.setHeader(GcpPubSubHeaders.TOPIC, "newTopic").build();

并修改sendToPubsub(Message<byte[]> message)以使用消息作为输入。

参考以获取更多信息

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

相关内容

  • 没有找到相关文章

最新更新