JMS 和 AMQP - RabbitMQ

2023-12-29

我试图了解什么是 JMS 以及它如何与 AMQP 术语相关联。 我知道JMS是一个API,AMQP是一个协议。

这是我的假设(以及问题)

  • RabbitMQ使用AMQP协议(而不是实现AMQP协议)
  • Java客户端需要使用AMQP协议客户端库来连接/使用RabbitMQ
  • JMS API 在哪里发挥作用? JMS API 应该使用 AMQP 客户端库来连接到 RabbitMQ?
  • 通常我们使用JMS来连接RabbitMQ、ActiveMQ等消息代理。那么这里使用的默认协议是什么而不是AMQP呢?

上面的一些可能是愚蠢的。 :-) 但我试图理解它。


你的问题有点乱,但让我们一点一点地看看。

一般概念:

Java 消息服务(JMS) API 是一种 Java 面向消息的中间件 (MOM) API,用于在两个或多个客户端之间发送消息。 JMS 是 Java Platform, Enterprise Edition 的一部分,由 Java Community Process 下开发的规范(JSR 914)定义。它是一种消息传递标准,允许基于 Java 企业版 (Java EE) 的应用程序组件创建、发送、接收和读取消息。它允许分布式应用程序的不同组件之间的通信松散耦合、可靠且异步.

Now (from 维基百科 https://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol):

高级消息队列协议 (AMQP)是面向消息中间件的开放标准应用层协议。这 AMQP 的定义特征是消息导向、排队、路由 (包括点对点和发布订阅)、可靠性和 安全。

最重要的是(同样来自维基百科):

与仅定义 API 的 JMS 不同,AMQP 是线路级的 协议。线路级协议是对传输层格式的描述。 作为八位字节流通过网络发送的数据。 因此,任何可以创建和解释消息的工具 符合此数据格式可以与任何其他兼容的数据格式互操作 工具与实现语言无关

您应该了解的一些重要事项:

  1. 请记住,AMQP 是一种不实现 JMS API 的消息传递技术。
  2. JMS是API,AMQP是协议。所以说JMS的默认协议是什么是没有意义的,当然是客户端 应用程序在调用时使用 HTTP/S 作为连接协议 WebLogic Web 服务。
  3. JMS 只是一个 API 规范。它不使用任何协议。 JMS 提供者(如 ActiveMQ)可以使用任何底层协议来 实现JMS API。例如:Apache ActiveMQ 可以使用任何 以下协议:AMQP、MQTT、OpenWire、REST(HTTP)、RSS 和 Atom, Stomp、WSIF、WS 通知、XMPP。我建议你阅读使用 JMS 传输作为连接协议 http://docs.oracle.com/cd/E13222_01/wls/docs103/webserv_adv_rpc/jmstransport.html#wp244314.

祝你好运 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JMS 和 AMQP - RabbitMQ 的相关文章

随机推荐

  • 如何对数据库中的商品进行折扣建模?

    我正在建立一个电子商务网站 并希望在有限的时间内为某些商品提供折扣 我的产品表 MySQL 如下所示 Product productId Name Weight Price price as on the cover of the item
  • 使用 QAction 而不添加到菜单(或工具栏)

    我正在尝试开发一个具有非常模块化的命令方法的应用程序 并且认为这会很好 因为我正在使用 pyqt 使用 QAction 将快捷方式绑定到命令 但是 似乎操作快捷方式仅在操作在菜单或工具栏中可见时才起作用 有谁知道如何在不可见的情况下让此操作
  • Swift 和 CoreData 使用自定义类作为可转换对象

    我正在尝试使用带有 swift 和 CoreData 的自定义类作为可转换对象 我一直在浪费时间试图弄清楚但无法解决 我不断收到两个错误 无法将属性标记为 NSManaged 因为它的类型无法在 Objective C 中表示 并且属性无法
  • 捕获字符串格式中的 **vars() 模式

    我经常发现自己使用以下模式进行字符串格式化 a 3 b foo c dict mykey myval prints a is 3 b is foo mykey is myval print a is a b is b mykey is c
  • 如何调用 SQLitePCL.Batteries.Init()?

    我正在尝试为我的应用程序创建 SQLite 数据库 但遇到了此错误 System Exception 您需要调用 SQLitePCL raw SetProvider 如果 您正在使用捆绑包 这是通过调用完成的 SQLitePCL Batte
  • 如何使用 Firefox 扩展上传二进制内容?

    在我的 Firefox 扩展中 我下载了该文件 然后该扩展应该上传它 我执行以下操作 downloading file var persist Components classes mozilla org embedding browser
  • AppDomain.CurrentDomain.AssemblyResolve 请求 .resources 程序集?

    使用代码如何将附属程序集嵌入到 EXE 文件中 https stackoverflow com questions 1453755 how to embed a satellite assembly into the exe file 14
  • 多列透视

    我正在努力根据交易数据表生成一个枢轴 我的数据表如下 Date Store Customer Value 01 12 15 StoreA Cust1 3 80 01 12 15 StoreB Cust2 2 40 01 12 15 Stor
  • 如何使用 MagicalRecord 设置 Core Data 轻量级迁移?

    我在尝试使用 MagicalRecord 设置核心数据的轻量级迁移时遇到了困难 我使用 Google 和 SO 查看了有关此主题的所有帖子 我明白如何持久存储协调器有效以及我尝试进行的设置也可以执行的操作 这是我的代码 AppDelegat
  • 在休眠状态下禁用ONLY_FULL_GROUP_BY

    我需要在休眠中禁用 ONLY FULL GROUP BY 这是我当前的会话工厂 我不确定如何在此指定 sql mode
  • 使用延迟链循环进行多个 ajax 调用

    有多个问题已经有关于此问题的答案 但到目前为止 在这种设置下所有问题都不起作用 function login u p console log 1 return post url u p function out console log 3
  • 在 IIS7 的 web.config 中设置集成模式

    在 IIS7 中 您现在拥有集成模式和经典模式 是否可以使用 web config 强制站点在集成模式下运行 而无需访问 IIS7 我问的原因是我最近注册了 Mosso 需要以集成模式而不是经典模式运行我的网站 我知道我可以打电话给他们 也
  • 如何将 WebDAV 合并到我的 iPhone 应用程序中?

    我想将 WebDAV 添加到我的 iPhone 应用程序中 实现此功能的最佳方法 库是什么 WebDAV 只是 HTTP 的扩展 因此 您可以使用 iPhone 上可用的任何现有 HTTP API 来实现 WebDAV 假设您的需求不需要对
  • 作为语言基准的琐碎数学问题

    为什么人们坚持使用琐碎的数学问题 例如在斐波那契数列中查找数字 作为语言基准 这些通常不会针对相对论速度进行优化吗 首当其冲的瓶颈通常不是在 I O 系统 API 调用 字符串和结构操作 处理大量数据 抽象面向对象的东西等方面吗 这是对过去
  • 如何在 ido 模式 (Emacs) 下更改驱动器号?

    我在 Windows 上使用 Emacs 我的默认文件夹是c home 但我想编辑我的文件d 在ido模式下怎么做 我试过 但这让我陷入了c Currently I use C f change back to normal find fi
  • 如何实时验证和修正Excel中的数据?

    我知道 Excel 具有数据验证功能 但是有没有办法自动为用户应用更改 而不是提示他们存在问题 例如 我们有一个通用电子表格模板供内部系统添加项目 在第一列中 对于 项目编号 不能有任何非法字符 因此 如果用户在 A1 中输入 AN XR1
  • 在Go中,如何确定数组中切片的偏移量?

    我知道a1是数组中的一个切片a 是否可以确定偏移量a1相对于 的开始a 基本上模拟指针算术 a int8 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 a1 a 3 14 fmt Println a1 has leng
  • 如何在 Amazon EC2 中上传 Tomcat 的库

    我需要将 lib 上传到我的 Tomcat 文件夹 在 EC2 实例中 我一直以来所做的就是 scp r i home path to key key pem home path to file file jar ec2 user my a
  • DDD 以及 Getters 和 Setters 的使用

    我读过一些关于 Getters 和 Setters 的使用的文章 帖子 以及它们如何帮助破坏域模型对象中封装的目的 我理解不使用 setter 背后的逻辑 您允许客户端代码在对象业务规则和不变量的上下文之外操作该对象的属性 现在这位校长仍然
  • JMS 和 AMQP - RabbitMQ

    我试图了解什么是 JMS 以及它如何与 AMQP 术语相关联 我知道JMS是一个API AMQP是一个协议 这是我的假设 以及问题 RabbitMQ使用AMQP协议 而不是实现AMQP协议 Java客户端需要使用AMQP协议客户端库来连接