基于JMS规范的ActiveMQ
为什么80%的码农都做不了架构师?>>>
基于JMS规范的ActiveMQ
JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
//消息生产者
package javax.jms;/*** @version $Rev: 467553 $ $Date: 2006-10-25 06:01:51 +0200 (Wed, 25 Oct 2006) $*/
public interface MessageProducer {void setDisableMessageID(boolean value) throws JMSException;boolean getDisableMessageID() throws JMSException;void setDisableMessageTimestamp(boolean value) throws JMSException;boolean getDisableMessageTimestamp() throws JMSException;void setDeliveryMode(int deliveryMode) throws JMSException;int getDeliveryMode() throws JMSException;void setPriority(int defaultPriority) throws JMSException;int getPriority() throws JMSException;void setTimeToLive(long timeToLive) throws JMSException;long getTimeToLive() throws JMSException;Destination getDestination() throws JMSException;void close() throws JMSException;void send(Message message) throws JMSException;void send(Message message, int deliveryMode, int priority, long timeToLive)throws JMSException;void send(Destination destination, Message message) throws JMSException;void send(Destination destination,Message message,int deliveryMode,int priority,long timeToLive)throws JMSException;
}
//消息消费者的定义
package javax.jms;/*** @version $Rev: 467553 $ $Date: 2006-10-25 06:01:51 +0200 (Wed, 25 Oct 2006) $*/
public interface MessageConsumer {String getMessageSelector() throws JMSException;MessageListener getMessageListener() throws JMSException;void setMessageListener(MessageListener listener) throws JMSException;Message receive() throws JMSException;Message receive(long timeout) throws JMSException;Message receiveNoWait() throws JMSException;void close() throws JMSException;
}
//消息监听
public interface MessageListener {void onMessage(Message message);
}
//消息的内部定义,所有属性的使用还是要看厂商支不支持
public interface Message {static final int DEFAULT_DELIVERY_MODE = DeliveryMode.PERSISTENT;static final int DEFAULT_PRIORITY = 4;static final long DEFAULT_TIME_TO_LIVE = 0;String getJMSMessageID() throws JMSException;void setJMSMessageID(String id) throws JMSException;long getJMSTimestamp() throws JMSException;void setJMSTimestamp(long timestamp) throws JMSException;byte[] getJMSCorrelationIDAsBytes() throws JMSException;void setJMSCorrelationIDAsBytes(byte[] correlationID) throws JMSException;void setJMSCorrelationID(String correlationID) throws JMSException;String getJMSCorrelationID() throws JMSException;Destination getJMSReplyTo() throws JMSException;void setJMSReplyTo(Destination replyTo) throws JMSException;Destination getJMSDestination() throws JMSException;void setJMSDestination(Destination destination) throws JMSException;int getJMSDeliveryMode() throws JMSException;void setJMSDeliveryMode(int deliveryMode) throws JMSException;boolean getJMSRedelivered() throws JMSException;void setJMSRedelivered(boolean redelivered) throws JMSException;String getJMSType() throws JMSException;void setJMSType(String type) throws JMSException;long getJMSExpiration() throws JMSException;void setJMSExpiration(long expiration) throws JMSException;int getJMSPriority() throws JMSException;void setJMSPriority(int priority) throws JMSException;void clearProperties() throws JMSException;boolean propertyExists(String name) throws JMSException;boolean getBooleanProperty(String name) throws JMSException;byte getByteProperty(String name) throws JMSException;short getShortProperty(String name) throws JMSException;int getIntProperty(String name) throws JMSException;long getLongProperty(String name) throws JMSException;float getFloatProperty(String name) throws JMSException;double getDoubleProperty(String name) throws JMSException;String getStringProperty(String name) throws JMSException;Object getObjectProperty(String name) throws JMSException;Enumeration getPropertyNames() throws JMSException;void setBooleanProperty(String name, boolean value) throws JMSException;void setByteProperty(String name, byte value) throws JMSException;void setShortProperty(String name, short value) throws JMSException;void setIntProperty(String name, int value) throws JMSException;void setLongProperty(String name, long value) throws JMSException;void setFloatProperty(String name, float value) throws JMSException;void setDoubleProperty(String name, double value) throws JMSException;void setStringProperty(String name, String value) throws JMSException;void setObjectProperty(String name, Object value) throws JMSException;void acknowledge() throws JMSException;void clearBody() throws JMSException;
}
比较重要的一些属性:jmsxappid标识发送消息的应用程序jmsxconsumertxid的事务标识符的交易内,此消息被消耗jmsxdeliverycount消息传递次数jmsxgroupid消息组,此消息的一部分JMSXGroupSeq组内此消息的序列号jmsxproducertxid标识符的交易在该消息所产生的交易jmsxrcvtimestamp的JMS提供者将信息传递给消费者的时间jmsxstate用来定义一个提供程序特定的状态jmsxuserid识别用户发送消息
Message selectors(消息筛选器)
//一个简单的用法
String selector = "SYMBOL= 'AAPL'";
MessageConsumer consumer=session.createConsumer(destination, selector);
MESSAGE BODY
JMS定义了六个java类型的消息体,也被称为有效载荷。通过使用这些对象,数据和信息可以通过消息有效载荷发送。
消息基消息类型(Message)。用于发送没有有效负载的消息,只有标题和属性。通常用于简单的事件通知。
文本消息(TextMessage)-消息的有效负载是一个字符串。通常用于发送简单的文本和数据。
映射/键值消息(mapmessage) -使用一组名称/值对其有效载荷。名称是字符串类型和值是一个java的原始类型。
字节消息(BytesMessage )- 字节数组作为有效载荷。
流消息(StreamMessage)- 包含流原始java类型的填充顺序读取消息。
对象消息(ObjectMessage)- 将一个java序列化对象作为它的负载。通常用于复杂的java对象。还支持java集合。
JMS domains(两种消息模式)
THE POINT-TO-POINT DOMAIN(点对点模式)
THE PUBLISH/SUBSCRIBE DOMAIN (发布订阅模式)
演变出了 Request/reply messaging in JMS applications(请求回复模式),事务确认的时候有很多的用处。
转载于:https://my.oschina.net/QAAQ/blog/667132
基于JMS规范的ActiveMQ相关推荐
- activemq和jms_保证主题,JMS规范和ActiveMQ的消息传递
activemq和jms 最近,一位客户要求我仔细研究ActiveMQ的"持久"消息的实现,它如何应用于主题以及在存在非持久订户的故障转移方案中会发生什么. 我已经了解到,JMS语 ...
- 保证主题,JMS规范和ActiveMQ的消息传递
最近,一个客户要求我仔细研究ActiveMQ的"持久"消息的实现,它如何应用于主题以及在存在非持久订阅者的故障转移方案中会发生什么. 我已经了解到,JMS语义规定,即使面对消息代理 ...
- JMS规范、ActiveMQ Broker和ActiveMQ传输协议
Java实现ActiveMQ通讯(构建过程) 编写pom.xml配置文件 <!-- https://mvnrepository.com/artifact/org.apache.activemq/ ...
- jms规范以及activeMq相关介绍
jms 提出的指在统一各种MOM(Message-Oriented Middleware )系统接口的规范,只是接口,不包含实现,实现JMS 接口的消息中间件称为JMS Provider.active ...
- MQ消息队列的JMS规范和AMQP协议的区别
详细介绍了JMS规范和AMQP协议的内容与区别. 文章目录 1 JMS 1.1 JMS消息模型 2 AMQP 2.1 AMQP消息模型 3 对比 1 JMS JMS(JAVA Message Serv ...
- MOM 系统介绍,带你了解 JMS 规范
什么是MOM MOM(Message Oriented Middleware)是面向消息的中间件,使用消息传送提供者来协调消息传送操作.MOM 需要提供 API 和管理工具.客户端使用 API 调用, ...
- JMS规范和AMQP协议
1.JMS经典模式详解 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM,Message oriented Middle ...
- JMS学习(五)--ActiveMQ中的消息的持久化和非持久化 以及 持久订阅者 和 非持久订阅者之间的区别与联系...
一,消息的持久化和非持久化 ①DeliveryMode 这是传输模式.ActiveMQ支持两种传输模式:持久传输和非持久传输(persistent and non-persistent deliver ...
- JMS学习(2):ActiveMQ简单介绍以及安装
现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 上篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了消息通信的规范JM ...
最新文章
- ubuntu 挂载 exfat 格式 U盘 mount:unknown filesystem type ‘exfat‘
- 解读Raft(二 选举和日志复制)
- 简单的函数(也叫方法)
- PHP获取表单值--同时获取下拉框的Value和Text值
- 中国的这些民居都是你没见过的!
- DRDS到MaxCompute(原ODPS)数据归档性能优化测试
- .NET可逆框架设计
- i++和++i作为参数时的编译器处理方式分析
- Java 项目 接口开发规范
- Golang sync.Mutex 与 sync.RWMutex
- css连续选取几个li_CSS高级选择器:nth-child()应用大全
- 2022.5.23-5.29 AI行业周刊(第99期):AI创业道路
- css3大绝技之animation动画
- 什么是零信任--用户/应用/设备--识别/认证/权限/信任
- 怎么屏蔽还有照片_【文末福利】在朋友圈发男神照片忘了屏蔽父母,麻麻的回应亮了…...
- Boxy SVG for Mac版矢量图编辑软件
- 电脑桌面云便签怎么设置短信提醒便签事项?
- [Error Code: 904, SQL State: 42000] ORA-00904 : 标识符无效
- 杰理AC632蓝牙芯片ADC
- ABBYY FastML:一种用于大型文档流处理的客户端机器学习新方案。
热门文章
- 报此错错解决办法:java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
- Ubuntu技巧之xxx is not in the sudoers file解决方法
- Linq to Oracle 使用教程(三)数据的增、删、改
- Vista开发兼容性概述
- Android_Bitmap_图片的二次采样并生成缩略图
- android之XmlSerializer序列化XML(写入) android之XmlSerializer序列化XML(写入)...
- Java基础提高学习笔记2
- 一个JS多个数组取交集算法
- 全国第一家FPGA云主机(FAAS)正式启动售卖,被阿里云抢先了。
- CATransform3D 特效详解