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

使用spring cloud流向错误通道发送错误消息

嵇丰
2023-03-14

我正在使用spring-cloud-stream:1.3.0.发行版、spring-cloud-stream-binder-kafka:1.3.0.发行版开发spring引导应用程序。我使用spring integration dsl拆分文件中的行,使用beanio将行转换为json,要求将成功的json消息写入一个kafka主题,并将错误消息写入不同的kafka主题。下面是application.yml中的配置。

spring:
  cloud:
    stream:
      kafka:
        binder:
          autoAddPartitions: true
      bindings.webmarketbasket:
        destination: webmarketbasket
        group: usproductrecommendationsgroup
        producer:
          partitionCount: 5
          errorChannelEnabled: true
      bindings.webmarketbasket.errors:
        destination: webmarketbasketerrors
        group: usproductrecommendationsgroup
        producer:
          partitionCount: 5
      bindings.error:
        destination: errorchannel
        group: usproductrecommendationsgroup
        producer:
          partitionCount: 5

在spring-cloud-stream-binder-kafka:1.3.0.release中,我注意到一个pull请求https://github.com/spring-cloud/spring-cloud-stream/pull/1039,它在errorChannelEnabled设置为true时创建PublishSubscribeChannel,还有一个testcase检查是否为生产者错误通道创建了bean。

当我在应用程序http://localhost:8195/beans中检查spring Actuctor url时,会创建全局错误通道的“ErrorChannel”bean,但不会创建“WebMarketBasket.Errors”bean。当存在“org.springframework.messaging.messagehandlingexception”时,错误消息被发送到“errorchannel”kafka主题,并停止处理文件中的剩余行。Kafka主题“WebMarketBasketErrors”从未创建。你能帮忙吗,如果我错过了什么,请告诉我。

共有1个答案

闻安宜
2023-03-14

你好像混淆了两件事。

Spring Integration Error Channel支持是针对希望将某些内容发布到全局ErrorChannel时提供的,全局ErrorChannel通过Spring.Cloud.Stream.Bindings.Error.destination=MyErrors绑定到目标。

1.3中的新支持为每个侦听器创建一个错误通道;它是pub/sub,并且桥接到全局errorchannel。因此,该消息还将发布到...bindings.error.destination(如果已配置,则目标名为errorchannel)。专用错误通道的bean名称是webmarketbasket。USProductRemordationsGroup.Errors。框架没有卡夫卡主题绑定到那个频道。

如果您想自己处理错误,您可以从专用错误通道或全局错误通道中使用。

 类似资料:
  • 我正在尝试使用HDFS kafka连接器将protobuf消息从kafka发送到HDFS。我的连接器配置如下所示 为了测试这一点,我尝试在一个小节点应用程序中发送protobuf序列化消息。这是我的文件: 和我的节点应用程序 但是,当我运行此程序时,我会出现以下错误: 我该如何解决这个问题?我的猜测是,我的protobuf模式没有在Kafka模式注册表中注册,但我不确定。如果是这种情况,是否有方法

  • 我在Discord.py上做了一个机器人,我试图设置我想用参数发送消息的频道。代码是这样的: 当我键入通道id而不是arg1时,它可以工作,但是当我键入命令时,不和谐(!发送282772187812)它不工作,我得到这个错误:discord.ext.commands.errors.命令InvokeError:命令引发了一个异常:属性错误:'NoneType'对象没有属性'发送' 提前谢谢。

  • 我使用Spring的STOMP over WebSocket实现与一个全功能的ActiveMQ代理。当用户向主题订阅时,在成功订阅之前必须通过一些权限逻辑。我使用ChannelInterceptor应用权限逻辑,如下所示: WebSocketConfig。爪哇: WebSocketSecurityConfig.java: MySubscriptionInterceptor。爪哇: 当没有足够权限的

  • 我正在使用postman查看Twilio中发送消息api的响应格式。我使用的Api是https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Messages。我已经输入了基本的身份验证参数(帐户\u Sid和AuthToken作为用户名和密码),json请求格式为 但我得到的错误是21603,上面写着“需要一个‘发件人’电话号码”。你能告诉我

  • 试图从JavaScript SDK发送SNS消息。从亚马逊sns控制台发送的消息显示得很好, 下面是亚马逊 SNS 控制台 JSON 生成器输出,这对我来说工作正常。 但当SNS通过代码发送时,它会抛出消息错误;我正在使用Cordova推送通知插件,它需要包含一个消息标签。 1)如何为GCM(Android平台)格式化消息并将其发送?2)如何包含消息属性?

  • 我订阅了 在我的例子中,用户没有通过身份验证,但从这里 虽然用户目标通常意味着一个经过身份验证的用户,但它并不是严格要求的。不与经过身份验证的用户关联的WebSocket会话可以订阅用户目的地。在这种情况下,@sendtouser注释的行为与broadcast=false完全相同,即只针对发送正在处理的消息的会话。 未捕获此异常。所以我尝试使用直接将其发送给用户。 我基本上想做的是: 某些内容应该