当前位置: 首页 > 知识库问答 >
问题:

使用Spring Cloud Stream库重试将消息推送到Kinesis

孟子墨
2023-03-14

我正在编写一个生产者,使用Spring云流库将消息推送到Kinesis流。我能够成功地将数据推送到kinesis,但在kinesis方面,它失败了,吞吐量超出异常。有没有办法再次重试推送这些消息并确切知道哪个消息失败了?此外,我不想使用KPL或KCL。

我尝试了答案中建议的解决方案,这是我的配置:

Spring云流动绑定。输入制作人errorChannelEnabled:true spring。云流动绑定。输入制作人错误目的地:myFooDestination。myGroup。错误

这是正确的方法吗?那么,如何将“spring.cloud.stream.bindings.input.producer.error.destination:myFooDestination.myGroup.errors”映射到spring集成配置中的“error channel”属性,如下所示?

<int-http:inbound-channel-adapter id="abcErrorChannel"
                                      channel="defChannel"
                                      **error-channel="errorChannel**"
                                  </int-http:inbound-channel-adapter>

共有2个答案

钱修雅
2023-03-14

客户组仅适用于消费者。在生产者方面没有这样的组概念。对于在生产者方面绑定到错误通道,请使用下面的属性和下面的代码绑定到错误通道。

spring.cloud.stream.bindings.output.destination=kinesis-stream
spring.cloud.stream.bindings.output.producer.errorChannelEnabled=true

@ServiceActivator(inputChannel = "kinesis-stream.errors")
public void receiveProduceError(Message receiveMsg) {
    System.err.println("receive error msg: " + receiveMsg);
}
白嘉志
2023-03-14

AWS Kinesis活页夹中的PutRecord请求完全基于AmazonKinesisAsync,发送到AWS确实是异步的。因此,我们不能在那里使用内置的RetryTemplate功能。但同时,该异步操作的错误被发送到特定于目标的错误通道:https://docs.spring.io/spring-cloud-stream/docs/current/reference/htmlsingle/#_producer_properties

ErrorChannel已启用

When set to true, if the binder supports asynchroous send results, send failures are sent to an error channel for the destination. See “[binder-error-channels]” for more information.

默认值:false。

频道名称基于目的地和消费者组,加上后缀:https://docs.spring.io/spring-cloud-stream/docs/current/reference/htmlsingle/#spring-云流概述错误处理

此外,如果您绑定到现有目标,例如:

spring.cloud.stream.bindings.input.destination=myFooDestination
spring.cloud.stream.bindings.input.group=myGroup

完整的目标名称是myFODestination.myGroup,然后专用错误通道名称是myFODestination.myGroup.errors

 类似资料:
  • 问题内容: 我想使用Java将“推送通知”消息发送到特定的iPhone设备。 我不知道该怎么做。 我对此进行了谷歌搜索,他们建议使用“ PayLoad”类,但不要从任何jar文件中获取此类。 请有人指导我通过Java将推送通知消息发送到iPhone吗? 问题答案: 使用JavaPNS。例如:

  • 消息推送 PDF版下载 如流开放了消息发送接口,企业可以使用这些接口让企业应用与用户间进行双向通信。 推送消息 向成员推送消息 请求方式:POST(HTTPS) 请求地址:https://api.im.baidu.com/api/message/send?access_token=ACCESS_TOKEN 请求body:(每种类型的消息请求body不同,详见消息推送格式) 参数说明: 参数 类型

  • 1、离线消息 接口说明: 接口类型:回调型接口 接口作用:智齿将客服发送给用户的离线消息推送至企业预先配置好的回调地址上。 请求方法: POST 请求格式: { "type": 202, //消息类型,表示客服发送消息给客户 "partnerId": "", //企业自己的用户id "msgId": "" ,//消息id "content": "" ,//客

  • 使用StreamBridge,我将包含两种不同类型的对象的消息发送到单个Kafka主题。有没有办法定义一个能够使用两种类型消息的Spring Cloud Stream的功能消费者?

  • 用户画像+平台提供了一个全新的功能:消息推送(目前支持为小米手机用户推送消息)。用户可以根据需要创建客群,待客群生成后,点击客群右侧的“推送消息”按钮,即可设置消息推送任务。 推送消息前,需要在小米开放平台接入小米推送服务和获得应用信息(App ID,App Key,App Secret等)。小米推送服务具体请参考:https://dev.mi.com/console/appservice/pus

  • 我使用此代码通过C#与GCM发送通知消息,使用Winform,Webform,无论什么。现在我想发送到FCM(Firebase云消息传递)。我应该更新我的代码吗?: 但GCM改为FCM。发送通知的代码是否相同?在哪里可以找到服务器API密钥?是相同的解决方案吗?