通过Jar文件实现事件发布功能

时间:2014-04-01 13:23:02

标签: java architecture redis activemq quartz-scheduler

我有一个要求,我希望根据某个操作触发事件,并且此功能将作为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(刚刚听说过)

问题:不知道如何使用它以及它如何帮助我。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的各种解决方案。实际上这是JMS。(以前我不知道这个技术)

(1)使用Redis发布/子事件发布

http://redis.io/topics/pubsub

对于简单的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