Как добавить второй адаптер ресурсов для работы с ibm mq (WebSphere) и ActiveMQ (Artemis) одновременно? - PullRequest
0 голосов
/ 18 апреля 2019
  1. Я хочу использовать ActiveMQ (Artemis) и IBM MQ одновременно.
  2. Встроенный в ActiveMQ сервер приложений Wildfly, где было развернуто мое приложение.
  3. Я хочу использовать дваадаптеры ресурсов, сначала для ActiveMQ, а затем для IBM MQ, но я не могу его настроить.
  4. Вот моя конфигурация для standalone-full.xml:
 <mdb>
        <resource-adapter-ref resource-adapter-name="${ejb.resource-adapter-name:activemq-ra.rar}"/>
        <bean-instance-pool-ref pool-name="mdb-strict-max-pool" />
      </mdb>
<resource-adapters>

        <resource-adapter id="wmq.jmsra.rar">
          <archive>wmq.jmsra-9.1.2.0.rar</archive>
          <transaction-support>NoTransaction</transaction-support>
          <config-property name="startupRetryCount">1</config-property>
          <connection-definitions>
            <connection-definition class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:jboss/jms/ivt/IVTCF" enabled="true" use-java-context="true" pool-name="IVTCF">
              <config-property name="channel">A.CHANNEL01</config-property>
              <config-property name="hostName">any-host</config-property>
              <config-property name="transportType">1</config-property>
              <config-property name="queueManager">QMANAG</config-property>
              <config-property name="port">1415</config-property>
            </connection-definition>
          </connection-definitions>
          <admin-objects>
            <admin-object class-name="com.ibm.mq.connector.outbound.MQQueueProxy" jndi-name="java:jboss/TEST.Q" pool-name="TEST.REQ">
              <config-property name="baseQueueName">TEST.Q</config-property>
              <config-property name="baseQueueManagerName">QMANAG</config-property>
            </admin-object>
          </admin-objects>
        </resource-adapter>
      </resource-adapters>
Как я могу добавить второй адаптер сюда? Если я заменим:
<resource-adapter-ref resource-adapter-name="${ejb.resource-adapter-name:activemq-ra.rar}"/>

на

<resource-adapter-ref resource-adapter-name="wmq.jmsra.rar"/>

мой компонент mdb для IBM MQработает хорошо, но mdb-bean для ActiveMQ не работает.

1 Ответ

0 голосов
/ 18 апреля 2019

Настраиваемый resource-adapter-ref предназначен для адаптера ресурса по умолчанию , который будет использоваться всеми MDB, которые не задают свою собственную конфигурацию адаптера ресурса.Ваши MDB могут использовать любой адаптер ресурсов, который они хотят, вам просто нужно его настроить, например:

  1. На уровне дескриптора развертывания
<jboss xmlns="http://www.jboss.com/xml/ns/javaee"
    xmlns:jee="http://java.sun.com/xml/ns/javaee"
    xmlns:mdb="urn:resource-adapter-binding"
    xmlns:security="urn:security">

    <jee:assembly-descriptor>
        <mdb:resource-adapter-binding>
            <jee:ejb-name>SOCKET_MDB</jee:ejb-name>
            <mdb:resource-adapter-name>wmq.jmsra.rar</mdb:resource-adapter-name>
        </mdb:resource-adapter-binding>
    </jee:assembly-descriptor>
</jboss>

Это пример jboss-ejb3.xml файл, который может быть развернут вместе с вашим EJB.

Аннотируйте его в вашем MDB

Другой вариант - использование аннотации @ResourceAdapter в вашем MDB:

@MessageDriven(
activationConfig = { 
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
    @ActivationConfigProperty(propertyName="destination", propertyValue="foo")})
@ResourceAdapter(value="wmq.jmsra.rar")
public class MyMDB implements MessageListener {

    @Override
    public void onMessage(Message message) {        
    }
}
...