jms

5860 단어 jms
흔히 볼 수 있는 두 가지 오류는:javax입니다.jms.IllegalStateException: 세션이 닫혔을 때 네트워크 이상이 발생하면 클라이언트가 이 오류javax를 보고합니다.jms.JMSException: Channel was inactive for too long 서버 메시지가 오랫동안 메시지가 전송되지 않을 때 클라이언트가 이 오류를 보고하여 mq에 연결된 URL을 아래의 모양으로 수정할 수 있습니다failover: (tcp://127.0.0.1:61616?wireFormat.maxInactivityDuration=10000)&maxReconnectDelay=10000failover 실효 지원
maxInactivityDuration 최대 정지 시간 허용(메시지 서버 메시지 없음) maxReconnectDelay 최대 재연결 간격
Activemq 보안 메커니즘 및 안정성 연구
1) 보안 액세스 메커니즘:
activemq 시작 시 프로필 로드 $ACTIVEMQ_HOME/conf/activemq.xml,activemq.xml의 노드에 다음 요소를 추가하여 연결을 만들 때의 사용자 이름/비밀번호를 지원합니다.
<plugins>
    <simpleAuthenticationPlugin>
      <users>
        <authenticationUser username="system" password="manager"
            groups="users,admins"/>
        <authenticationUser username="user" password="password"
            groups="users"/>
        <authenticationUser username="guest" password="password" groups="guests"/>
      </users>
    </simpleAuthenticationPlugin>

      <!--  lets configure a destination based authorization mechanism -->
    <authorizationPlugin>
        <map>
          <authorizationMap>
            <authorizationEntries>
              <authorizationEntry queue=">" read="admins" write="admins" admin="admins" />
              <authorizationEntry queue="USERS.>" read="users" write="users" admin="users" />
              <authorizationEntry queue="GUEST.>" read="guests" write="guests,users" admin="guests,users" />
              
              <authorizationEntry topic=">" read="admins" write="admins" admin="admins" />
              <authorizationEntry topic="USERS.>" read="users" write="users" admin="users" />
              <authorizationEntry topic="GUEST.>" read="guests" write="guests,users" admin="guests,users" />
              
              <authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users" write="guests,users" admin="guests,users"/>
            </authorizationEntries>
            
            <!-- let's assign roles to temporary destinations. comment this entry if we don't want any roles assigned to temp destinations  -->
            <tempDestinationAuthorizationEntry>  
              <tempDestinationAuthorizationEntry read="tempDestinationAdmins" write="tempDestinationAdmins" admin="tempDestinationAdmins"/>
           </tempDestinationAuthorizationEntry>               
          </authorizationMap>
        </map>
     </authorizationPlugin>
   </plugins>

그 중에서 어떤 사용자가 어떤 종류의 대기열에 접근할 수 있는지에 대해 제한을 두었다.
클라이언트 자바 연결 activemq의 설정은 다음과 같습니다.
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
                <property name="brokerURL">
            <value>tcp://10.100.8.5:61616?wireFormat.maxInactivityDuration=0&amp;jms.useAsyncSend=true</value>
        </property>
<property name="userName" value="system"/>
<property name="password" value="manager"/>
    </bean>

2) 로컬에서만 activemq를 연결할 수 있도록 제한:
  
     
  

위의 0.0.0.0.0을localhost 또는 127.0.0.1로 바꾸면 본 기기에서만 연결할 수 있도록 제한할 수 있습니다.
3) 메인프레임 메커니즘:
연결된 URL을 다음과 같이 설정합니다.
    failover:(tcp://primary:61616,tcp://secondary:61616)?randomize=false
primary가 끊어지면 secondary가 자동으로 연결됩니다.
예:
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <!-- mq's URL -->
        <!-- wireFormat.maxInactivityDuration=0 means never close the inactive connection -->
        <property name="brokerURL">
            <value>failover:(tcp://localhost:61616?wireFormat.maxInactivityDuration=0,tcp://10.100.8.5:61616?wireFormat.maxInactivityDuration=0)?randomize=false&amp;jms.useAsyncSend=true</value>
        </property>
    </bean>

failover:를 사용할 때 jms.*형식의 매개 변수는 괄호 밖에 써야 합니다. 그렇지 않으면activemq는 정확하게 해석할 수 없습니다.
4) 동일한 시스템에서 여러 MQ Broker를 시작합니다.
마스터의 프로필은 conf/activemq입니다.xml, 복사하여 activemq2로 저장합니다.xml, 그리고 다음과 같은 수정을 합니다.
1. 브로커의name 속성을 수정합니다. 예를 들어:brokerName="slaveBroker", 브로커의 속성 추가 masterConnectorURI="tcp://masterhost:62001"
2. master의 data directory와 중복되지 않도록 data directory 위치를 수정합니다.
<persistenceAdapter>

       <kahaDB directory=”${activemq.base}/data/kahaDB2” />

</persistenceAdapter>

3. WEB 콘솔 구성 수정:
웹 컨트롤러의 설정은jetty에 있습니다.xml에서 이 파일을 복사하여jetty2로 저장합니다.xml, 그리고 jetty2.xml은 웹 콘솔의 프로필입니다.

그리고 제티 2.xml에서 웹 서비스의 포트를 수정하여 충돌을 피합니다.
<bean id=”Connector” …>

       <property name=”port” value=”8102” />

</bean>

슬레이브 브로커 시작:
cd  ${activemq-base}/bin

./activemq xbean:activemq2.xml  &

좋은 웹페이지 즐겨찾기