因此,创建订阅服务器时使用
pubSubTemplate.subscribeAndConvert( subs, { message ->
...非常简洁。
但是,是否可以使用这种方法设置Ack模式来创建订阅者呢?
使用通道适配器(不那么简洁的imo,以及ia正在探索subscribeAndConvert选项的原因),正如这里所描述的,https://cloud.google.com/pubsub/docs/spring#receiving-messages-using-channel-adapters -我可以这样做。
adapter.setAckMode(AckMode.MANUAL);有一个配置与弹簧云流可用于此;
spring.cloud.stream.gcp.pubsub.default.consumer.ack-mode: AUTO_ACK谢谢!
发布于 2022-11-13 15:14:16
在方法AckMode(AckMode.AUTO).中没有设置pubSubSubscriberTemplate.subscribeAndConvert的参数。
在Subscription中,可以使用PubSubInboundChannelAdapter将输入通道配置为Pub/Sub订阅。
正如您已经提到的使用PubSubInboundChannelAdapter,您可以设置确认模式为自动使用语法adapter.setAckMode(AckMode.AUTO)。
示例代码:
@Bean
public MessageChannel orderRequestInputChannel() {
return MessageChannels.direct().get();
}
@Bean
public PubSubInboundChannelAdapter orderRequestChannelAdapter(
@Qualifier("orderRequestInputChannel") MessageChannel inputChannel,
PubSubTemplate pubSubTemplate) {
PubSubInboundChannelAdapter adapter =
new PubSubInboundChannelAdapter(
pubSubTemplate, "orders-subscription");
adapter.setOutputChannel(inputChannel);
adapter.setPayloadType(Order.class);
adapter.setAckMode(AckMode.AUTO);
return adapter;
}可以将消费者端点的application.properties模式设置为:
spring.cloud.stream.gcp.pubsub.bindings.{CONSUMER_NAME}.consumer.ack-mode=AUTO_ACK
https://stackoverflow.com/questions/74300865
复制相似问题