>php教程 >PHP开发 >ActiveMQ의 세션 설정 관련 이해

ActiveMQ의 세션 설정 관련 이해

高洛峰
高洛峰원래의
2016-11-22 13:14:292601검색

참조 블로그 게시물: http://www.cnblogs.com/SzeCheng/p/4792084.html

참조 블로그 게시물: http://activemq.apache.org/producer-flow-control. html

용어 설명:

P: 생산자

C: 소비자

서버: P 또는 ActiveMQ 서비스

클라이언트: ActiveMQ 서비스 또는 C

클라이언트가 메시지를 성공적으로 받았다는 표시는 메시지가 서명되었다는 의미입니다. 메시지 수신 성공에는 일반적으로 다음 세 단계가 포함됩니다.

1. 클라이언트가 메시지를 받습니다.

2. 클라이언트가 메시지를 처리합니다.

3. 메시지가 서명되었습니다.

session = connection.createSession(Boolean.false, Session.CLIENT_ACKNOWLEDGE);##第一个参数控制事务,第二个参数控制消息

트랜잭션이 없는 세션에서 메시지 서명 시기와 방법은 세션 설정에 따라 다릅니다.

1. Session.AUTO_ACKNOWLEDGE

클라이언트가 receive 또는 onMessage에서 성공적으로 반환되면 Session은 자동으로 클라이언트가 이 메시지를 수신했다는 서명을 합니다.

2. Session.CLIENT_ACKNOWLEDGE

클라이언트는 메시지의 확인 메서드를 호출하여 메시지에 서명합니다.

message.acknowledge();

트랜잭션이 포함된 세션에서는 트랜잭션이 커밋될 때 서명이 자동으로 발생합니다. 트랜잭션이 롤백되면 수신된 모든 메시지가 다시 전달됩니다. 실제로 여기서 Session.CLIENT_ACKNOWLEDGE는 거의 사용되지 않습니다.

session = connection.createSession(Boolean.TRUE, Session.CLIENT_ACKNOWLEDGE);
session.commit();

요약:

1. 생산자의 경우: 서버는 P이고 클라이언트는 ActiveMQ 서비스입니다. 세션은 AUTO_ACKNOWLEDGE와 CLIENT_ACKNOWLEDGE로 설정되어 있지만 상대적으로 상황에 따라 차이는 크지 않습니다.

2. 소비자의 경우: 서버는 ActiveMQ이고 클라이언트는 C입니다. 세션은 AUTO_ACKNOWLEDGE로 설정됩니다. 메시지가 수신되면(receive 또는 onMessage가 성공적으로 반환됨) 소비가 성공하고 데이터가 대기열에서 제거됩니다. 데이터가 우리가 원하는 결과로 올바르게 처리되는지 여부는 신경 쓰지 않습니다. 세션이 CLIENT_ACKNOWLEDGE로 설정되면 성공적인 소비를 위해 승인 메서드를 수동으로 호출해야 하며 그런 다음 데이터가 대기열에서 제거됩니다.

3. P와 C의 세션이 서로 영향을 주지 않도록 설정한 모드입니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.