我使用DefaultMessageListenerContainer来配置消息驱动的通道适配器来读取队列中的消息,处理它并使用出站通道适配器将其发送到另一个队列。如果在将消息发送到出站队列时遇到任何异常(如javax.jms.JMSException: Message超过最大值),则需要在errorHandler (DefaultMessageListenerContainer属性)中处理它并通知接收方。
我能够在errorHandler中获得异常堆栈跟踪,但我不确定是哪条消息导致了异常。有任何方法可以获得导致errorHandler中异常的消息/有效负载吗?
public class MyE
我们使用的是Spring Cloud Stream 2.2和Kafka绑定器。我们注意到,如果pod在执行过程中由于某种原因被终止,那么我们将错过要发送到DLQ的消息。
我们通过捕获故障来管理异常,首先记录它,然后将故障发送到另一个服务以跟踪这种情况,最后再次抛出异常,以便由错误通道捕获并由DLQ捕获。这种方法在正常故障中无缝工作,但如果故障是由外部触发的(如意外关机),那么我们将错过DLQ部分,因为似乎相应的进程在到达错误通道之前就被终止了。我想知道这是否是一个已知的问题,因为在我们的用例中,它影响了这个框架的至少一次保证。
22:34:48.077 INFO Shutting down E
我已经看过了,我已经找到了如何让消息广播到所有服务器,但是在规则中有机器人公告会惹恼服务器所有者。将此代码修改为发送到所有服务器但不发送到其规则通道的最佳方式是什么?
@client.command(pass_context=True)
async def broadcast(ctx, *, msg):
for server in client.guilds:
for channel in server.text_channels:
try:
await channel.send(msg)