我有一个要求,我希望根据某个操作触发事件,并且此功能将作为jar文件实现。
让我们用一个例子解释一下。
有一个Web应用程序WAR_FILE。 有一个名为REST_CLIENT的休息客户端。 有一个jar文件,其中包含名为MY_JAR的客户端REST_CLIENT的api方法。
现在WAR_FILE将使用MY_JAR将数据发布到REST_CLIENT。
但是WAR_FILE不想等待它的响应。就像发布数据一样,不关心响应。 MY_JAR将从WAR_FILE获取所有输入并将其作为缓存存储在队列中。我使用redis将此队列维护为缓存。
主要问题是MY_JAR必须每次检查该队列中是否有任何请求要采取行动。
Sol 1:在MY_JAR中使用quartz来检查每n秒后是否有新的请求要处理。
问题1:WAR_FILE本身可能正在使用某些石英。
问题2:如果一个线程正在执行队列中的任务列表,而其他线程就会开始执行相同的请求。
Sol 2:使用cron job
问题:sol 1中的问题2
Sol 3 :RabitMQ / ActiveMQ(刚刚听说过)
问题:不知道如何使用它以及它如何帮助我。
请帮帮我。
答案 0 :(得分:0)
我找到了解决这个问题的各种解决方案。实际上这是JMS。(以前我不知道这个技术)
(1)使用Redis发布/子事件发布
对于简单的java:http://www.basrikahveci.com/a-simple-jedis-publish-subscribe-example/
春天的:http://java.dzone.com/articles/redis-pubsub-using-spring
(2)使用RabbitMQ
RabbitMQ安装:https://www.rabbitmq.com/install-debian.html
Java示例:http://www.rabbitmq.com/tutorials/tutorial-one-java.html