标签:
4.1 开发JSM的法式广义上说,一个JMS 应用是几个JMS 客户端交换动静,开发JMS 客户端应用由以下几步组成:
用JNDI 得到ConnectionFactory 东西;
用ConnectionFactory 创建Connection 东西;
用Connection 东西创建一个或多个JMS Session;
用JNDI 得到方针行列队伍或主题东西,即Destination 东西;
用Session 和Destination 创建MessageProducer 和MessageConsumer;
通知Connection 开始传送动静。
要初始化JMS,则需要使用连接工厂。客户端通过创建ConnectionFactory成立到ActveMQ的连接,一个连接工厂封装了一组连接配置参数,这组参数在配置ActiveMQ时已经界说,例如brokerURL参数,此参数传入的是ActiveMQ处事地点和端口,撑持openwire协议的默认连接为tcp://localhost:61616,撑持stomp协议的默认连接为tcp://localhost:61613。
注:由于C++客户端暂时仅撑持stomp协议,所以需要使用tcp://localhost:61613。
ConnectionFactory撑持并发。
Java客户端:
ActiveMQConnectionFactory结构要领:
ActiveMQConnectionFactory();
ActiveMQConnectionFactory(String brokerURL);
ActiveMQConnectionFactory(String userName, String password, String brokerURL) ;
ActiveMQConnectionFactory(String userName, String password, URI brokerURL) ;
ActiveMQConnectionFactory(URI brokerURL);
此中brokerURL为ActiveMQ处事地点和端口。
例如:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.0.135:61616");
或者
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
connectionFactory. setBrokerURL("tcp://192.168.0.135:61616");
4.2.2 Connection在告成创建正确的ConnectionFactory后,下一步将是创建一个连接,它是JMS界说的一个接口。ConnectionFactory卖力返回可以与底层动静通报系统进行通信的Connection实现。凡是客户端只使用单一连接。按照JMS文档,Connection的目的是“操作JMS供给者封装开放的连接”,以及暗示“客户端与供给者处事例程之间的开放TCP/IP套接字”。该文档还指出Connection应该是进行客户端身份验证的处所,除了其他一些事项外,客户端还可以指定惟一标识表记标帜符。
当一个Connection被创建时,它的传输默认是*的,必需使用start要领开启。
一个Connection可以成立一个或多个的Session。
当一个措施执行完成后,必需*之前创建的Connection,否则ActiveMQ不能释放资源,*一个Connection同样也*了Session,MessageProducer和MessageConsumer。
Connection撑持并发。
4.2.2.1 创建Connection
Java客户端:
ActiveMQConnectionFactory要领:
Connection createConnection();
Connection createConnection(String userName, String password);
例如:
Connection connection = connectionFactory.createConnection();
4.2.2.2 开启Connection
Java客户端:
ActiveMQConnection要领:
void start();
例如:
Connection.start();
4.2.2.3 *Connection
Java客户端:
ActiveMQConnection要领:
void close();
例如:
Connection.close();
4.2.3 Session一旦从ConnectionFactory中获得一个Connection,就必需从Connection中创建一个或者多个Session。Session是一个发送或接收动静的线程,可以使用Session创建MessageProducer,MessageConsumer和Message。
Session可以被事务化,也可以不被事务化,凡是,可以通过向Connection上的适当创建要领通报一个布尔参数对此进行设置。
Java客户端:
ActiveMQConnection要领:
Session createSession(boolean transacted, int acknowledgeMode);
此中transacted为使用事务标识,acknowledgeMode为签收模式。
例如:
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
4.2.4 Destination