2장. ActiveMQ


2.1. ActiveMQ Component

ActiveMQ 구성 요소를 사용하여 JMS Queue 또는 Topic에 메시지를 보내거나 Apache ActiveMQ 를 사용하여 JMS Queue 또는 Topic의 메시지를 사용할 수 있습니다.

이 구성 요소는 JMS 구성 요소를 기반으로 하며, 선언적 트랜잭션에 Spring의 JMS 지원을 사용합니다. 이를 위해 Spring의 JmsTemplate 을 사용하고 사용하기 위해 MessageListenerContainer 를 사용합니다. 모든 JMS 구성 요소 옵션은 ActiveMQ Component에도 적용됩니다.

이 구성 요소를 사용하려면 클래스 경로에 activemq.jar 또는 activemq-core.jar 가 있고 camel-core.jar 와 같은 Apache Camel 종속성(예:camel-spring.jarcamel-jms.jar )이 있는지 확인하십시오.

트랜잭션 및 캐싱

성능에 영향을 줄 수 있으므로 JMS에서 트랜잭션을 사용하는 경우 JMS 페이지의 아래 섹션 트랜잭션 및 캐시 수준을 참조하십시오.

2.2. URI 형식

activemq:[queue:|topic:]destinationName
Copy to Clipboard Toggle word wrap

여기서 destinationName 은 ActiveMQ 큐 또는 주제 이름입니다. 기본적으로 destinationName 은 큐 이름으로 해석됩니다. 예를 들어, 큐에 연결하려면 FOO.BAR 을 사용합니다.

activemq:FOO.BAR
Copy to Clipboard Toggle word wrap

원하는 경우 선택적 queue: 접두사를 포함할 수 있습니다.

activemq:queue:FOO.BAR
Copy to Clipboard Toggle word wrap

항목에 연결하려면 topic: 접두사를 포함해야 합니다. 예를 들어, 주제와 연결하려면 다음을 사용합니다 .

activemq:topic:Stocks.Prices
Copy to Clipboard Toggle word wrap

2.3. 옵션

모든 JMS 구성 요소 옵션은 ActiveMQ Component에도 적용됩니다.

2.4. EAP 배포의 Camel

이 구성 요소는 Red Hat JBoss EAP(JBoss Enterprise Application Platform) 컨테이너에서 간소화된 배포 모델을 제공하는 EAP 기반 Camel(Wildfly Camel) 프레임워크에서 지원합니다.

임베디드 브로커 또는 외부 브로커와 함께 작동하도록 ActiveMQ Camel 구성 요소를 구성할 수 있습니다. JBoss EAP 컨테이너에 브로커를 포함하려면 EAP 컨테이너 구성 file drop-whatfor 세부 사항에 ActiveMQ 리소스 어댑터를 구성하려면 ActiveMQ 리소스 어댑터 구성 을 참조하십시오.

2.5. 연결ECDHE 구성

다음 테스트 케이스에서는 activeMQComponent() 메서드 를 사용하여 ActiveMQComponent를 CamelContext 에 추가하는 방법과 ActiveMQ에 연결하는 데 사용되는 brokerURL 을 지정하는 방법을 보여줍니다.

camelContext.addComponent("activemq", activeMQComponent("vm://localhost?broker.persistent=false"));
Copy to Clipboard Toggle word wrap

2.6. Spring XML을 사용하여 연결ECDHE 구성

다음과 같이 ActiveMQ 브로커 URL을 ActiveMQComponent에서 구성할 수 있습니다.

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

  <camelContext xmlns="http://camel.apache.org/schema/spring">
  </camelContext>

  <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
    <property name="brokerURL" value="tcp://somehost:61616"/>
  </bean>

</beans>
Copy to Clipboard Toggle word wrap

2.7. 연결 풀링 사용

Camel을 사용하여 ActiveMQ 브로커로 보낼 때 풀링된 연결 팩토리를 사용하여 JMS 연결, 세션 및 생산자의 효율적인 풀링을 처리하는 것이 좋습니다. 자세한 내용은 ActiveMQ Spring 지원을 참조하십시오.

  1. Maven으로 AMQ 풀을 추가합니다.
    <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-pool</artifactId>
      <version>5.11.0.redhat-630516</version>
    </dependency>
Copy to Clipboard Toggle word wrap
  1. 다음과 같이 activemq 구성 요소를 설정합니다.
    <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://localhost:61616" />
    </bean>

    <bean id="pooledConnectionFactory"    class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
        <property name="maxConnections" value="8" />
        <property name="connectionFactory" ref="jmsConnectionFactory" />
    </bean>

    <bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
        <property name="connectionFactory" ref="pooledConnectionFactory"/>
        <property name="concurrentConsumers" value="10"/>
    </bean>

    <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
        <property name="configuration" ref="jmsConfig"/>
    </bean>
Copy to Clipboard Toggle word wrap
참고

풀링된 연결 팩토리에서 initdestroy methods를 확인합니다. 이러한 방법은 연결 풀이 제대로 시작되고 종료되었는지 확인하는 데 중요합니다.

그런 다음 PooledConnectionFactory 는 동시에 최대 8개의 연결이 있는 연결 풀을 만듭니다. 각 연결은 여러 세션에서 공유할 수 있습니다.

연결당 최대 세션 수를 구성하는 데 사용할 수 있는 maxActive 라는 옵션이 있습니다. 기본값은 500 입니다.

ActiveMQ 5.7 이후의 옵션은 목적을 더 잘 반영하도록 maxActiveSessionPerConnection 로 이름이 변경되었습니다.

concurrentConsumersmaxConnections 보다 높은 값으로 설정됩니다. 이 작업은 각 소비자가 세션을 사용할 수 있으므로 세션이 동일한 연결을 공유할 수 있으므로 이 작업이 작동합니다. 이 예제에서는 8 * 500 = 4000 세션을 동시에 사용할 수 있습니다.

2.8. 경로에서 MessageListener call

ActiveMQ 구성 요소는 JMS MessageListener 에서 프로세서 까지 도우미 유형 도 제공합니다. 즉, 빈 구성 요소가 모든 경로 내에서 직접 JMS MessageListenerBean 을 호출할 수 있습니다.

다음과 같이 JMS에서 MessageListener를 생성할 수 있습니다.

예제

public class MyListener implements MessageListener {
   public void onMessage(Message jmsMessage) {
       // ...
   }
}
Copy to Clipboard Toggle word wrap

그런 다음 다음과 같이 경로에서 사용하십시오.

예제

from("file://foo/bar").
  bean(MyListener.class);
Copy to Clipboard Toggle word wrap

즉, 모든 Apache Camel 구성 요소를 재사용하여 JMS MessageListener ECDHE\에 쉽게 통합할 수 있습니다.

2.9. ActiveMQ 대상 옵션 사용

ActiveMQ 5.6에서 사용 가능

" 대상" 접두사를 사용하여 엔드포인트 uri에서 대상 옵션을 구성할 수 있습니다. 예를 들어 소비자를 배타적으로 표시하고 사전 패치 크기를 50으로 설정하려면 다음과 같이 수행할 수 있습니다. .ECDHE

<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="file://src/test/data?noop=true"/>
    <to uri="activemq:queue:foo"/>
  </route>
  <route>
    <!-- use consumer.exclusive ActiveMQ destination option, notice we have to prefix with destination. -->
    <from uri="activemq:foo?destination.consumer.exclusive=true&amp;destination.consumer.prefetchSize=50"/>
    <to uri="mock:results"/>
  </route>
</camelContext>
Copy to Clipboard Toggle word wrap

2.10. 권고 메시지 사용

ActiveMQ는 사용할 수 있는 항목에 배치된 권고 메시지를 생성할 수 있습니다. 이러한 메시지는 느린 소비자 감지 또는 통계 빌드(일별 메시지/생성 등)의 경우 경고를 보내는 데 도움이 될 수 있습니다. 다음 Spring DSL 예제에서는 주제에서 메시지를 읽는 방법을 보여줍니다.

예제

<route>
	<from uri="activemq:topic:ActiveMQ.Advisory.Connection?mapJmsMessage=false" />
	<convertBodyTo type="java.lang.String"/>
	<transform>
	     <simple>${in.body}&#13;</simple>
	</transform>
	<to uri="file://data/activemq/?fileExist=Append&ileName=advisoryConnection-${date:now:yyyyMMdd}.txt" />
</route>
Copy to Clipboard Toggle word wrap

큐에서 메시지를 사용하는 경우 data/activemq 폴더 아래에 다음 파일이 표시되어야 합니다.

advisoryConnection-20100312.txt

advisoryProducer-20100312.txt
Copy to Clipboard Toggle word wrap

문자열을 포함합니다.

예제

      ActiveMQMessage {commandId = 0, responseRequired = false, messageId = ID:dell-charles-3258-1268399815140
      -1:0:0:0:221, originalDestination = null, originalTransactionId = null, producerId = ID:dell-charles-
      3258-1268399815140-1:0:0:0, destination = topic://ActiveMQ.Advisory.Connection, transactionId = null,
      expiration = 0, timestamp = 0, arrival = 0, brokerInTime = 1268403383468, brokerOutTime = 1268403383468,
      correlationId = null, replyTo = null, persistent = false, type = Advisory, priority = 0, groupID = null,
      groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = null,
      marshalledProperties = org.apache.activemq.util.ByteSequence@17e2705, dataStructure = ConnectionInfo
      {commandId = 1, responseRequired = true, connectionId = ID:dell-charles-3258-1268399815140-2:50,
      clientId = ID:dell-charles-3258-1268399815140-14:0, userName = , password = *****,
      brokerPath = null, brokerMasterConnector = false, manageable = true, clientMaster = true},
      redeliveryCounter = 0, size = 0, properties = {originBrokerName=master, originBrokerId=ID:dell-charles-
      3258-1268399815140-0:0, originBrokerURL=vm://master}, readOnlyProperties = true, readOnlyBody = true,
      droppable = false}
Copy to Clipboard Toggle word wrap

2.11. 구성 요소 JAR 가져오기

이 종속성이 필요합니다.

  • camel-activemq

ActiveMQ는 ActiveMQ 프로젝트와 함께 릴리스된 JMS 구성 요소의 확장입니다.

<dependency>
    <groupId>org.fusesource</groupId>
    <artifactId>camel-activemq</artifactId>
    <version>7.11.0.fuse-sb2-7_11_0-00035-redhat-00001</version>
</dependency>
Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat