标签: jms

JMS如何在内部工作?

我一直在研究各种通信技术/体系结构/模式/实现(阅读:流行语),包括Web服务(WCF,Axis2),ESB,SOA,并希望了解有关消息传递的JMS.

从概念上讲,JMS听起来很简单.我的看法是它是一个中间代理,管理来自发布者的消息并将它们路由到适当的订阅者.这是通过在发布消息时对消息进行排队,并在收到消息时将它们出列来完成的.

问题1:我对JMS的基本理解是否正确?

在阅读有关技术时,让我烦恼的一件事就是当某个特征(有意或无意)挥手时.

根据我的基本理解,必须运行JMS提供程序才能发送或接收消息.我对发布的假设是JMS提供程序只是等待消息发布,然后将其存储在队列中(内存或数据库支持,具体取决于实现).但是,我不太确定接收是如何工作的.

问题2:如果没有消息可以接收(通常)阻止?

问题2b:如果是这样,阻塞是如何实现的?客户端是否不断轮询消息?在发布消息之前,服务器是否只是不响应(如何在没有超时的情况下工作?)提供者是否会向接收者发起呼叫?

问题2c:如果没有,如何确保及时收到消息,而不影响性能?

基本描述似乎倾向于单个JMS提供程序,以确保集中管理消息而不会丢失.我可以看到缩放是一个问题.

问题3:JMS如何扩展?

在扩展时,我可以看到存在复杂性以确保将单个消息传递给所有适当的订户,而不管哪个物理服务器接收到该消息.

问题3b:JMS实施如何确保在规模化环境中可靠交付?

请注意,虽然这些问题与JMS有关,但它们可能适用于任何消息传递基础结构.我欢迎特定于JMS的答案以及那些更通用或甚至特定于其他技术的答案.

java messaging jms message-queue

33
推荐指数
2
解决办法
2万
查看次数

什么是Java消息服务(JMS)?

我目前正在评估JMS,但我没有得到我能用它的东西.

目前,我认为这将是一个Usecase:我想创建一个SalesInvoice PDF并在SalesOrder离开Warehouse时打印它,因此在Delivery事务期间,我可以发送一个事务性打印请求,该请求刚刚在SalesOrder事务成功完成时开始.

现在我发现大多数JMS产品都是独立服务器.

  • 为什么需要使用独立服务器进行消息处理,例如使用Quartz调度程序进行一些简单的inproc处理?
  • 它如何与我的应用程序交互?
  • 是不是太慢了?
  • 您已成功实施哪些用例?

java jms

32
推荐指数
3
解决办法
4万
查看次数

java.net maven repo - 缺少JMS工件

我刚刚使用默认的原型创建了一个新的Maven项目,并将以下依赖项添加到我的POM文件中.

<dependencies>
  <dependency>
    <groupId>javax.jms</groupId>
    <artifactId>jms</artifactId>
    <version>1.1</version>
    <scope>compile</scope>
  </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

由于许可问题,我意识到Sun的JAR不在Maven中心,我将以下Maven回购添加到我的POM(我知道这是不好的做法,但需要将其添加到settings.xml)

<repositories>
  <repository>
    <id>Repo ID</id>
    <layout>default</layout>
    <name>Java.net Maven repo</name> 
    <releases>
      <enabled>true</enabled>
    </releases>
    <url>http://download.java.net/maven/2/</url>
  </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

我仍然在我的POM文件中看到此错误.

"缺少工件javax.jms:jms:jar:1.1:compile"

有没有人知道除了我已有的配置还需要做什么?

maven-2 jms jar repository

32
推荐指数
3
解决办法
2万
查看次数

如何将Java JMS与MQseries一起使用

我正在尝试开发一个JMS 独立应用程序来读取和写入MQSeries上的Queue.我的老板让我使用纯java JMS(不是ibm.mq lib)来做到这一点.

以下是进行jms连接所需的信息:

  mq.hostname=10.10.10.10
  mq.channel=API.CLIENTCHL
  mq.queueManager=MQPETAPI
  mq.port=1422
Run Code Online (Sandbox Code Playgroud)

你知道怎么做吗?或者你有任何链接教我这样做.

java jms ibm-mq

31
推荐指数
3
解决办法
9万
查看次数

中间件和SOA示例

我是一个缺乏经验的Java开发人员,试图围绕一些基本的中间件/ SOA概念和技术,特别是:

  • 面向服务的体系结构(SOA)
  • 面向消息的中间件(MOM)
  • 消息队列
  • Apache Camel
  • 马骡
  • EJB的
  • 端点和路由
  • 服务总线/ ESB
  • JMS

在网上/维基百科上查看每一个之后,我能够(大部分)获得这些中的每一个都不错的定义.我不理解的是所有这些技术/概念如何在后端协同工作以提供第二/业务层解决方案.

有人可以举一个使用所有这些技术/概念的架构的例子,并解释它们在整体解决方案中扮演的角色吗?一旦我看到一个工作示例,我相信它会帮助我连接大部分点.

编辑:由于我添加了赏金,我有几个答案建议阅读书籍.虽然我很欣赏这里的所有反馈,但我根本无法分享300个声望点的答案,基本上归结为"RTM"(特别是当我平了,并且买不起手册!)重申,赏金和明确的答案将发送给能够在一个有意义的实际例子中击中所有这些子弹的人.这不一定是中间件的纲要!只是一段或两段,展示了如何将所有这些结合在一起以生成Java业务层解决方案.再次感谢.

java soa jms message-queue ejb-3.0

31
推荐指数
3
解决办法
2万
查看次数

如何从HTTP基本身份验证中获取密码

我正在使用Java BASIC身份验证.

我的Servlet发送了一条JMS消息,但是我需要提供用户和密码来在创建连接时对自己进行身份验证:

javax.jms.ConnectionFactory.createConnection(String username, String password)
Run Code Online (Sandbox Code Playgroud)

我可以从HttpServletRequest.getUserPrincipal()中检索用户名.但似乎无法检索密码.我该如何解决这个问题?

java servlets jms basic-authentication

31
推荐指数
1
解决办法
6万
查看次数

监控Apache kafka的用户界面 - kafka manager vs kafka monitor

我是卡夫卡的新手.我们希望监控和管理kafka主题.我们尝试了不同的开源监控工具

  1. 卡夫卡显示器
  2. 卡夫卡经理

这两种工具都很好.但我们无法做出应该包含在我们的部署堆栈中的决定.哪一个更好,为什么,以及在哪种情况下?

雅虎的'kafka manager'看起来比较老,而来自LinkedIn的'kafka monitor'是新的

卡夫卡监控 - 在此输入图像描述

monitoring jms apache-kafka

30
推荐指数
2
解决办法
5万
查看次数

轻量级JMS代理

我正在寻找一个小而高效的轻量级JMS代理解决方案,没有或只有最少的依赖.我的消息传递代码应该在我无法控制的很多依赖项的环境中运行.因此,将ActiveMQ解决方案与我的一系列自定义类一起部署,这将是荒谬的.

java messaging jms

28
推荐指数
2
解决办法
2万
查看次数

JMS和ESB - 它们是如何相关的?

对我来说,JMS和ESB似乎是非常相关的东西,我试图了解它们究竟是如何相关的.

我已经看到JMS可以用作ESB的传输的句子 - 那么除了传输之外的其他什么应该存在于这样的ESB中?JMS是一个简单的ESB,或者如果不是,那么真正的ESB缺少什么?

esb jms

28
推荐指数
2
解决办法
2万
查看次数

哪个更好:PooledConnectionFactory或CachingConnectionFactory?

我们在Tomcat(7.0.41)中使用Spring(3.2.4)和ActiveMQ(5.8.0)并且不清楚最佳用法是什么.我们希望使用JmsTemplate生成MessageListenerContainer来接收消息.

我们应该在接收方使用缓存吗?(相关链接)
使用ActiveMQ和故障转移工作CachingConnectionFactory?(相关链接)
当我们使用PooledConnectionFactory时需要设置useAsyncSend ="true"吗?(相关链接)

java spring tomcat activemq-classic jms

27
推荐指数
1
解决办法
3万
查看次数