Spring Cloud 出站通道适配器
PubSubMessageHandler
是GCP发布/订阅的出站通道适配器,它在Spring MessageChannel
上侦听新消息。它使用PubSubTemplate
将其发布到GCP发布/订阅主题。
为了构造消息的Pub / Sub表示,出站通道适配器需要将Spring Message
有效载荷转换为Pub / Sub期望的字节数组表示。它将这种转换委托给PubSubTemplate
。要自定义转换,您可以在PubSubTemplate
中指定一个PubSubMessageConverter
,它将Object
有效负载和Spring Message
的标头转换为PubsubMessage
。
要使用出站通道适配器,必须在用户应用程序侧提供PubSubMessageHandler
bean并对其进行配置。
@Bean @ServiceActivator(inputChannel = "pubsubOutputChannel") public MessageHandler messageSender(PubSubTemplate pubsubTemplate) { return new PubSubMessageHandler(pubsubTemplate, "topicName"); }
提供的PubSubTemplate
包含将消息发布到GCP发布/订阅主题的所有必要配置。
PubSubMessageHandler
默认情况下异步发布消息。可以将发布超时配置为同步发布。如果未提供任何内容,则适配器将无限期等待响应。
可以通过setPublishFutureCallback()
方法为PubSubMessageHandler
中的publish()
调用设置用户定义的回调。如果成功,这些对于处理消息ID很有用,如果抛出错误,则对处理错误ID是有用的。
要覆盖默认目的地,可以使用GcpPubSubHeaders.DESTINATION
标头。
@Autowired private MessageChannel pubsubOutputChannel; public void handleMessage(Message<?> msg) throws MessagingException { final Message<?> message = MessageBuilder .withPayload(msg.getPayload()) .setHeader(GcpPubSubHeaders.TOPIC, "customTopic").build(); pubsubOutputChannel.send(message); }
也可以使用setTopicExpression()
或setTopicExpressionString()
方法为主题设置SpEL表达式。
更多建议: