nos*_*nos 174 java jms message-queue
我只是在阅读关于JMS和Apache ActiveMQ的abit.并且想知道现实世界中有人使用JMS或类似的消息队列技术吗?
Jon*_*Jon 182
JMS(ActiveMQ是JMS代理实现)可以用作允许异步请求处理的机制.您可能希望这样做,因为请求需要很长时间才能完成,或者因为多方可能对实际请求感兴趣.使用它的另一个原因是允许多个客户端(可能用不同语言编写)通过JMS访问信息.ActiveMQ就是一个很好的例子,因为您可以使用STOMP协议来允许从C#/ Java/Ruby客户端进行访问.
一个真实世界的例子是用于为特定客户下订单的Web应用程序.作为下订单(并将其存储在数据库中)的一部分,您可能希望执行许多其他任务:
为此,您的应用程序代码会将消息发布到包含订单ID的JMS队列.监听队列的应用程序的一部分可以通过获取orderId,在数据库中查找订单然后将该订单与另一个第三方系统放在一起来响应事件.您的应用程序的另一部分可能负责获取orderId并向客户发送确认电子邮件.
duf*_*ymo 90
始终使用它们异步处理长时间运行的操作.Web用户不希望等待超过5秒的时间来处理请求.如果您的运行时间超过了一个,那么一种设计是将请求提交到队列并立即发回一个URL,用户可以检查该URL以查看作业何时完成.
发布/订阅是另一种将发送者与许多接收者分离的好方法.它是一种灵活的架构,因为订户可以根据需要来去.
小智 74
我对JMS有很多惊人的用途:
用于客户服务的Web聊天通信.
调试后端的日志记录.所有应用服务器都在各个级别广播调试消息.然后可以启动JMS客户端以监视调试消息.当然我可以使用像syslog这样的东西,但这给了我各种方法来根据上下文信息过滤输出(eq由app server name,api call,log level,userid,message type等...).我也把输出着色了.
调试记录到文件.与上面相同,仅使用过滤器拉出特定部分,并记录到文件以进行常规日志记录.
警报.再次,与上述日志记录类似的设置,观察特定错误,并通过各种方式警告人们(电子邮件,短信,IM,低吼弹出......)
动态配置和控制软件集群.每个应用服务器都会广播一个"configure me"消息,然后是一个配置守护进程,它将使用包含各种配置信息的消息进行响应.稍后,如果所有应用服务器都需要立即更改其配置,则可以从配置守护程序完成.
通常 - 延迟活动的排队交易,如结算,订单处理,配置,电子邮件生成......
在任何想要保证异步传递消息的地方都很棒.
pug*_*arx 19
分布式(a)同步计算.
一个真实世界的例子可以是一个应用程序范围的通知框架,它在应用程序使用过程中的各个点向利益相关者发送邮件.因此,应用程序将Producer
通过创建一个Message
对象,将其放在特定的对象上Queue
,然后继续前进.
会有一组Consumer
s会订阅相关Queue
问题,并会小心处理Message
发送的内容.请注意,在此事务过程中,Producer
s与Message
处理给定的逻辑分离.
消息传递框架(ActiveMQ等)充当Message
通过提供MessageBroker
s 来促进此类事务的主干.
我们使用它来启动我们不想中断或与现有事务冲突的异步处理.
例如,假设你有一个昂贵且非常重要的逻辑,比如"买东西",购买东西的一个重要部分就是"通知东西商店".我们使通知调用异步,以便通知调用中涉及的任何逻辑/处理都不会阻止或与使用购买业务逻辑的资源竞争.最终结果,购买完成,用户满意,我们得到我们的钱,因为队列是有保证的交付,商店一打开就会得到通知,或者一旦队列中有新项目就会立即得到通知.
我把它用于我的学术项目,这是一个类似亚马逊的在线零售网站.JMS用于处理以下功能:
我们有多个也实现了连接到主服务器的远程客户端.如果连接可用,则它们用于访问主数据库,或者如果不使用自己的数据库.为了处理数据一致性,我们实施了2PC机制.为此,我们使用JMS来交换这些系统之间的消息,即一个充当协调器的人将通过在队列上发送消息来启动该过程,而其他人将通过在队列上再次发回消息来响应.正如其他人已经提到的,这与pub/sub模型类似.
我见过JMS用于不同的商业和学术项目.只要您想要一个完全分离的分布式系统,JMS就可以很容易地进入您的画面.一般来说,当您需要从一个节点发送请求时,网络中的某个人在没有/向发送者提供有关接收者的任何信息的情况下处理它.
在我的例子中,我在我的论文中使用JMS开发了面向消息的中间件(MOM),其中特定类型的面向对象的对象作为您的请求在一侧生成,并在另一侧作为您的响应进行编译和执行.
归档时间: |
|
查看次数: |
113017 次 |
最近记录: |