3.2. 메시징 하위 시스템 구성 개요
messaging-activemq
하위 시스템에 대한 기본 구성은 full 또는 full
-ha
구성으로 JBoss EAP 서버를 시작할 때 포함됩니다. full-ha
옵션에는 클러스터링 및 고가용성과 같은 기능을 위한 고급 구성이 포함되어 있습니다.
필요하지 않지만, 이 구성 개요와 함께 실행하려면 helloworld-mdb
빠른 시작을 작업 예제로 사용하는 것이 좋습니다.
messaging-activemq
하위 시스템에서 사용할 수 있는 모든 설정에 대한 자세한 내용은 EAP_HOME/docs/schema/
디렉터리에 있는 스키마 정의를 참조하거나 다음과 같이 관리 CLI의 하위 시스템에서 read-resource-description
작업을 실행합니다.
/subsystem=messaging-activemq:read-resource-description(recursive=true)
서버 구성 파일의 다음 확장 기능은 JBoss EAP에 messaging-activemq
하위 시스템을 런타임의 일부로 포함하도록 지시합니다.
<extensions> ... <extension module="org.wildfly.extension.messaging-activemq"/> ... </extensions>
messaging-activemq
하위 시스템의 구성은 <subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">
요소에 포함됩니다.
<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> <server name="default"> <cluster password="${jboss.messaging.cluster.password:CHANGE ME!!}"/> <security-setting name="#"> <role name="guest" send="true" consume="true" create-non-durable-queue="true" delete-non-durable-queue="true"/> </security-setting> <address-setting name="#" dead-letter-address="jms.queue.DLQ" expiry-address="jms.queue.ExpiryQueue" max-size-bytes="10485760" page-size-bytes="2097152" message-counter-history-day-limit="10" redistribution-delay="1000"/> <http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/> <http-connector name="http-connector-throughput" socket-binding="http" endpoint="http-acceptor-throughput"> <param name="batch-delay" value="50"/> </http-connector> <in-vm-connector name="in-vm" server-id="0"/> <http-acceptor name="http-acceptor" http-listener="default"/> <http-acceptor name="http-acceptor-throughput" http-listener="default"> <param name="batch-delay" value="50"/> <param name="direct-deliver" value="false"/> </http-acceptor> <in-vm-acceptor name="in-vm" server-id="0"/> <broadcast-group name="bg-group1" connectors="http-connector" jgroups-cluster="activemq-cluster"/> <discovery-group name="dg-group1" jgroups-cluster="activemq-cluster"/> <cluster-connection name="my-cluster" address="jms" connector-name="http-connector" discovery-group="dg-group1"/> <jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/> <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/> <connection-factory name="InVmConnectionFactory" connectors="in-vm" entries="java:/ConnectionFactory"/> <connection-factory name="RemoteConnectionFactory" ha="true" block-on-acknowledge="true" reconnect-attempts="-1" connectors="http-connector" entries="java:jboss/exported/jms/RemoteConnectionFactory"/> <pooled-connection-factory name="activemq-ra" transaction="xa" connectors="in-vm" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory"/> </server> </subsystem>
연결 정보
메시징 클라이언트는 자카르타 메시징 ConnectionFactory
개체를 사용하여 서버와 연결합니다. 기본 JBoss EAP 구성은 여러 연결 팩토리를 정의합니다. in -vm, http 및 pooled 연결에는 <connection-factory>
가 있습니다.
<connection-factory name="InVmConnectionFactory" connectors="in-vm" entries="java:/ConnectionFactory"/> <connection-factory name="RemoteConnectionFactory" ha="true" block-on-acknowledge="true" reconnect-attempts="-1" connectors="http-connector" entries="java:jboss/exported/jms/RemoteConnectionFactory"/> <pooled-connection-factory name="activemq-ra" transaction="xa" connectors="in-vm" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory"/>
자세한 내용은 연결 팩트 구성 섹션을 참조하십시오.
커넥터 및 수락자
각 자카르타 메시징 연결 팩토리는 커넥터를 사용하여 클라이언트 생산자 또는 소비자에서 메시징 서버로의 자카르타 메시징 지원 통신을 활성화합니다. 커넥터 오브젝트는 메시징 서버에 연결하는 데 사용하는 전송 및 매개 변수를 정의합니다. 이에 대응하는 어셉터 개체는 메시징 서버에서 수락한 연결 유형을 식별합니다.
기본 JBoss EAP 구성은 여러 커넥터와 어셉터를 정의합니다.
예제: 기본 커넥터
<http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/> <http-connector name="http-connector-throughput" socket-binding="http" endpoint="http-acceptor-throughput"> <param name="batch-delay" value="50"/> </http-connector> <in-vm-connector name="in-vm" server-id="0"/>
예제: 기본 Acceptors
<http-acceptor name="http-acceptor" http-listener="default"/> <http-acceptor name="http-acceptor-throughput" http-listener="default"> <param name="batch-delay" value="50"/> <param name="direct-deliver" value="false"/> </http-acceptor>
자세한 내용은 Acceptors 및 Connectors 섹션을 참조하십시오.
소켓 바인딩 그룹
기본 커넥터의 socket-binding
특성은 http
라는 소켓 바인딩을 참조합니다. JBoss EAP는 표준 웹 포트를 통해 인바운드 요청을 멀티플렉싱할 수 있기 때문에 http 커넥터가 사용됩니다.
이 socket-binding
은 구성 파일의 다른 위치에서 <socket-binding-group>
섹션의 일부로 찾을 수 있습니다. http 및 https 소켓 바인딩의 구성이 <socket-binding-groups>
요소 내에 어떻게 표시되는지 확인합니다.
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> ... <socket-binding name="http" port="${jboss.http.port:8080}"/> <socket-binding name="https" port="${jboss.https.port:8443}"/> ... </socket-binding-group>
소켓 바인딩에 대한 자세한 내용은 JBoss EAP 구성 가이드에서 소켓 바인딩 구성을 참조하십시오.
메시징 보안
messaging-activemq
하위 시스템에는 JBoss EAP를 처음 설치할 때 단일 security-setting
요소가 포함되어 있습니다.
<security-setting name="#"> <role name="guest" delete-non-durable-queue="true" create-non-durable-queue="true" consume="true" send="true"/> </security-setting>
이는 와일드카드 #
에 명시된 대로 역할 게스트
가 있는 모든 사용자가 서버의 모든 주소에 액세스할 수 있음을 선언합니다. 와일드카드 구문에 대한 자세한 내용은 주소 설정 구성을 참조하십시오.
대상 및 원격 연결 보안에 대한 자세한 내용은 메시징 보안 구성을 참조하십시오.
메시징 대상
전체
및 full-ha
구성에는 JBoss EAP가 만료되었거나 적절한 대상으로 라우팅할 수 없는 두 개의 유용한 대기열이 포함됩니다.
<jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/> <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/>
다음 방법 중 하나를 사용하여 JBoss EAP에 고유한 메시징 대상을 추가할 수 있습니다.
관리 CLI 사용
다음 관리 CLI 명령을 사용하여 큐를 추가합니다.
jms-queue add --queue-address=testQueue --entries=queue/test,java:jboss/exported/jms/queue/test
다음 관리 CLI 명령을 사용하여 주제를 추가합니다.
jms-topic add --topic-address=testTopic --entries=topic/test,java:jboss/exported/jms/topic/test
관리 콘솔 사용
메시징 대상은 Configuration → Subsystems → Messaging (ActiveMQ) → Server 로 이동한 후 서버를 선택하고, 대상을 선택하고, 보기를 클릭하여 관리 콘솔에서 구성할 수 있습니다. JMS Queue 탭을 선택하여 대기열을 구성하고 JMS 토픽을 선택하여 토픽 을 구성합니다.
Jakarta EE 배포 설명자 또는 주석을 사용하여 대상 정의.
Jakarta EE 8에서는 배포 설명자에 큐 및 토픽 구성이 포함될 수 있습니다. 다음은 자카르타 메시징 큐를 정의하는 자카르타 EE 설명자 파일의 코드 조각입니다.
... <jms-destination> <name>java:global/jms/MyQueue</name> <interfaceName>javax.jms.Queue</interfaceName> <destinationName>myQueue</destinationName> </jms-destination> ...
예를 들어,
helloworld-mdb
빠른 시작의 메시지 기반 빈에는 애플리케이션을 실행하는 데 필요한 대기열 및 주제를 정의하는 주석이 포함되어 있습니다. 이 방식으로 생성된 대상은 런타임 대기열 목록에 표시됩니다. 관리 CLI를 사용하여 런타임 대기열 목록을 표시합니다. 빠른 시작을 배포하면 생성된 런타임 큐가 다음과 같이 표시됩니다./subsystem=messaging-activemq/server=default/runtime-queue=*:read-resource { "outcome" => "success", "result" => [ ... { "address" => [ ("subsystem" => "messaging-activemq"), ("server" => "default"), ("runtime-queue" => "jms.queue.HelloWorldMDBQueue") ], "outcome" => "success", "result" => {"durable" => undefined} }, ... { "address" => [ ("subsystem" => "messaging-activemq"), ("server" => "default"), ("runtime-queue" => "jms.topic.HelloWorldMDBTopic") ], "outcome" => "success", "result" => {"durable" => undefined} }, ... ] }
자세한 내용은 Configuring Messaging Destinations 에서 참조하십시오.