事务及签收模式
Session session = con.createSession(true, Session.CLIENT_ACKNOWLEDGE);
第一个参数是是否开启事务,true为开启事务,false为关闭事务。
当事务开启时,生产者需要通过session.commit()提交数据到MQ,如果数据不是自己希望的需要通过session.rollback()取消上传;同样,消费者消费完数据之后,应通过session.commit()提交(关于session的rollback()此处不知道)
签收模式的意思是:消费者消费之后,是否自动发送确认消费到MQ,所以通常有两种消费方式:
Session.CLIENT_ACKNOWLEDGE //手动签收
Session.AUTO_ACKNOWLEDGE //自动签收
手动签收模式时,需要在消费者中调用textMessage.acknowledge();
签收模式中还有一种,不发送ack的选项,即不向MQ发送消费确认,但有可能产生数据的重复问题,因此本地必须作好数据的除重处理
登录的用户密码
控制台登录
添加登录以及修改admin(登录地址:localhose:8161)的密码均在一个配置文件内,文件路径为:$activemq$/conf/jetty-realm.properties
Java代码中的用户密码
设置java中ConnectionFactory connectionFactior = new ActiveMQConnectionFactory("userName", "password", "tcp://localhost:61616");
userName和password的密码修改位置在$activemq$/conf/activemq.xml
在该文件中125行 加入:
<plugins>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="felix" password="felix" groups="users, admins"></authenticationUser>
</users>
</simpleAuthenticationPlugin>
</plugins>
</broker>