![](/img/trans.png)
[英]handling application and business failure scenarios for a java REST API using exceptions
[英]Java/JMS - Processing number of messages with handling failure scenarios
我有一个必须处理消息数量的要求。 这些消息将由另一个进程插入到数据库表中。 我要做的就是检查数据库中的新消息,然后根据其配置将其发送给相应的客户,无论是电子邮件还是http。 在任何给定时间,消息数量可能为数千条,客户数量约为1000条。
我打算以此方式设计生产者消费者的工作方式。 就像生产者线程轮询DB一样,查找新消息并将其放入Queue中,然后工作线程读取这些消息和进程。
最初,看起来JMS是满足此要求的正确解决方案。 但是我正在寻找是否有更好的替代方案,例如ExecutorService,在以下情况下使用适合此要求的Threadpool。
这意味着,如果我对所有客户的所有消息都有一个队列,那么如果一条消息失败,则将不会处理其他消息。
有人可以建议我如何最好地解决这个问题吗?
提前致谢。
您应该认真看一下Apache Camel 。 它使用大量内置组件(SQL,JMS,SMTP,HTTP,文件等)来处理所有线程,为您生产和使用,并且您与消费者/生产者有关的术语与Camel集成视图相匹配。
实现您所描述的操作非常简单:
from("sql:select * from table")
.to("jms:myQueue");
看一下端点列表
使用通用JMS,重试逻辑相对容易实现:没有事务,为消息分配一个重试属性,每次重试都增加它,重试时在侦听器中暂停,在限制用完后退出。
每个客户的队列是最简单的配置。 动态队列可以帮助您帮助客户:动态地为每个客户创建队列和侦听器。
实际上,可靠地轮询数据库可能会给您带来更多挑战。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.