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
  • 관리 콘솔 사용

    메시징 대상은 ConfigurationSubsystemsMessaging (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 에서 참조하십시오.