Write Code 4 ActiveMQ
来一个HelloWorld级此外例子,来感觉下ActiveMQ。详细来说,我这边会写一个出产者用于发送动静,一个消费者用于吸收动静。实际上,JMS是有“套路”的,下面我将以出产者为例具体说明。
第一步:建设ConnectionFactory毗连工场
ConnectionFactory
实际上,这里是存在安详隐患的,也就是任何人一旦知道MQ的地点,就可以毗连会见了,我们可以在activemq.xml中设置指定的用户、暗码才气会见ActiveMQ。
关于broker_bind_url,默认就是tcp://localhost:61616,说明是回收TCP协议,61616端口。其实对付ActiveMQ不只仅支持TCP协议,尚有其他协议,开启了多个端口。
第二步:建设Connection
Connection
Connection就代表了应用措施和动静处事器之间的通信链路。得到了毗连工场后,就可以建设Connection。
事实上,ConnectionFactory存在重载要领:
Connection createConnection(String username,String password)
也就是说我们也可以在这里指定用户名、暗码举办验证
第三步:建设Session
Session
Session,用于发送和接管动静,并且是单线程的,支持事务的。假如Session开启事务支持,那么Session将生存一组信息,要么commit到MQ,要么回滚这些动静。Session可以建设MessageProducer/MessageConsumer。
第四步:建设Destination
Destination
所谓动静方针,就是动静发送和接管的所在,要么queue,要么topic。
第五步:建设MessageProducer
MessageProducer
第六步:配置耐久化方法
耐久化方法配置
第七步:界说动静工具,并发送
Message
出产者和消费者之间通报的工具,由3个主要部门组成:
动静头(路由)+动静属性(动静选择器,今后先容)+动静体(JMS类型的5种范例动静)
动静范例
第八步:释放毗连
release resource
必需close connection,只有这样ActiveMQ才会释放资源!
消费者的代码和上面很是雷同,只不外就是建设MessageConsumer举办receive罢了,留意receive()/receive(long)/receiveNoWait(),这些说明消费者可以回收阻塞模式、非阻塞模式接管动静。
措施运行后,我们来看一下管控台:
ActiveMQ Web Info
Messages Enqueued:暗示出产了几多条动静,记做P
Messages Dequeued:暗示消费了几多条动静,记做C
Number Of Consumers:暗示在该行列上尚有几多消费者在期待接管动静
Number Of Pending Messages:暗示尚有几多条动静没有被消费,实际上是暗示动静的积存水平,就是P-C
在说说Session
在通过Connection建设Session的时候,需要配置2个参数,一个是否支持事务,另一个是签收的模式。我们重点说一下签收模式:
签收模式
什么是签收?通俗点说,就是消费者接管到动静后,需要汇报动静处事器,我收到动静了。当动静处事器收到回执后,本条动静将失效。因此签收将对PTP模式发生很大影响。假如消费者收到动静后,并不签收,那么本条动静继承有效,很大概会被其他消费者消费掉!
AUTO_ACKNOWLEDGE:暗示在消费者receive动静的时候自动的签收
CLIENT_ACKNOWLEDGE:暗示消费者receive动静后必需手动的挪用acknowledge()要领举办签收
DUPS_OK_ACKNOWLEDGE:签不签收无所谓了,只要消费者可以或许容忍反复的动静接管,虽然这样会低落Session的开销