ActiveMQ常用API详解

ActiveMQ 常用API详解

  1. ActiveMQConnectionFactory
    客户端通过创建ConnectionFactory创建到ActiveMQ的连接,一个连接工厂封装了一组连接配置参数,这组参数在配置ActiveMQ时已经定义,例如brokerURL参数,此参数传入的是ActiveMQ的服务地址和端口,
    支持openwire协议的默认连接是tcp://localhost:61616,支持stomp协议的默认连接是tcp://localhost:61613(C++)
Java中ActiveMQConnectionFactory的构造方法有:

ActiveMQConnectionFactory();
ActiveMQConnectionFactory(String brokerURL);
ActiveMQConnectionFactory(String userName, String password, String brokerURL) ;      
ActiveMQConnectionFactory(String userName, String password, URI brokerURL) ;
ActiveMQConnectionFactory(URI brokerURL);
  1. Connection
    在成功创建ConnectionFactory之后,下一步将创建一个连接。
    当一个connection被创建之后,它的传输默认是关闭的,需要调用start()开启。一个connection可以创建一个或者多个session。
    当一个程序执行完之后,必须关闭之前创建的connection,调用close(),否则ActiveMQ不能释放资源,关闭connection同样也关闭了session,MessageProducer和MessageConsumer
ActiveMQConnectionFactory方法:

Connection createConnection();
Connection createConnection(String userName, String password);
  1. Session
    通过connection创建一个或者多个Session。Session是一个发送或者接收消息的线程,可以使用Session创建MessageProducer,MessageConsumer和Message。通过connection创建一个或者多个Session。Session是一个发送或者接收消息的线程,可以使用Session创建MessageProducer,MessageConsumer和Message。
ActiveMQConnection方法:

Session createSession(boolean transacted, int acknowledgeMode);

其中transacted为使用事务标识,acknowledgeMode为签收模式。
签收模式有三种:
Session.AUTO_ACKNOWLEDGE:为自动确认,客户端发送和接收消息不需要做额外的工作。哪怕是接收端发生异常,也会被当作正常发送成功。
Session.CLIENT_ACKNOWLEDGE:为客户确认,客户端接收到消息后,必须调用javax.jms.Message的acknowledge方法。jms服务器才会当作发送成功,并删除消息。
在这种情况下,签收发生在Session层面,签收一个已经消费的消息会自动签收这个Session所有已消费的收条。
Session.DUPS_OK_ACKNOWLEDGE :允许副本的确认模式。一旦接收方应用程序的方法调用从处理消息处返回,会话对象就会确认消息的接收;而且允许重复确认。Session 不必确保对传送消息的签收,它可能引起消息的重复,但是降低了session的开销,只有客户端能容忍重复的消息,才可使用。

  1. Destination
    Destination是一个客户端用来指定生产消息目标和消费信息来源的对象。
    在PTP模式中,Destination被称为Queue,在Pub/Sub(生产/订阅模式)中,Destination就被称为Topic(主题),在程序中可以使用多个Queue和Topic。
ActiveMQSession方法:

Queue createQueue(String queueName);
TemporaryQueue createTemporaryQueue();
Topic createTopic(String topicName);
TemporaryTopic createTemporaryTopic();
  1. MessageProducer
    MessageProducer是一个由session创建的对象,用来向Destination发送消息。
MessageProducer createProducer(Destination destination);
例如:
MessageProducer producer = session.createProducer(destination);

发送消息

ActiveMQMessageProducer方法:

void send(Destination destination, Message message);
void send(Destination destination, Message message, int deliveryMode, int priority,
long timeToLive);
void send(Message message);
void send(Message message, int deliveryMode, int priority, long timeToLive);
其中deliveryMode为传送模式,priority为消息优先级,timeToLive为消息过期时间。
  1. MessageConsumer
    MessageConsumer是一个由session创建的对象,用来从Destination接收消息。
ActiveMQSession方法:

MessageConsumer createConsumer(Destination destination);
MessageConsumer createConsumer(Destination destination, String messageSelector); 
MessageConsumer createConsumer(Destination destination, String messageSelector, boolean noLocal);
TopicSubscriber createDurableSubscriber(Topic topic, String name);
//messageSelector 为消息选择器,noLocal标志默认为false,当设置为true时,限制消费者只能接收和自己相同的连接发布的消息,此标志只适用于主题,不适用于队列
TopicSubscriber createDurableSubscriber(Topic topic, String name, String messageSelector, boolean noLocal);

消息的同步接收和异步接收
消息的同步接收是指客户端调用receive方法去主动接收消息,
消息的异步接收是指当消息到达时,ActiveMQ主动通知客户端。客户端可以通过注册一个实现MessageListener接口的对象到MessageConsumer。MessageListener只有一个必须实现的方法–>onMessage,它只接收一个参数,既Message。在为每个发送到Destination的消息实现onMessage时,将调用该方法。

ActiveMQMessageConsumer方法:

Message receive()
Message receive(long timeout)
Message receiveNoWait()
或者
实现MessageListener接口,每当消息到达时,ActiveMQ会调用MessageListener中的onMessage 函数。
  1. Message
    JMS程序的最终目的是生产和消费的信息能被其他程序使用,JMS的Message是一个既简单又不乏灵活性的基本格式,允许创建不同平台上符合非JMS程序格式的消息。
    Message由以下部分组成:消息头,属性和消息体。
ActiveMQSession方法:

BlobMessage createBlobMessage(File file)
BlobMessage createBlobMessage(InputStream in)
BlobMessage createBlobMessage(URL url)
BlobMessage createBlobMessage(URL url, boolean deletedByBroker)
BytesMessage createBytesMessage()
MapMessage createMapMessage()
Message createMessage()
ObjectMessage createObjectMessage()
ObjectMessage createObjectMessage(Serializable object)
TextMessage createTextMessage()
TextMessage createTextMessage(String text)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值