我有
FROM ibmcom/mq
ENV LICENSE=accept
ENV MQ_QMGR_NAME=QMGR
COPY config.mqsc /etc/mqm/
COPY setup.sh /etc/mqm/
USER root
RUN chmod +x /etc/mqm/setup.sh
EXPOSE 1414 9443
CMD ["/etc/mqm/setup.sh"]
config.mqsc 只是定义我的队列
DEFINE QLOCAL('MY.TEST.QUEUE') REPLACE
和 setup.sh 是
#!/bin/bash
# Apply configuration
runmqsc < /etc/mqm/config.mqsc
# Start MQ server
QMGR_NAME=$MQ_QMGR_NAME
strmqm $QMGR_NAME
FROM jboss/wildfly:latest
ENV WILDFLY_CONFIG=standalone-full.xml
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-c", "standalone-full.xml", "-b", "0.0.0.0"]
WORKDIR /app
COPY /target/my-app.jar /opt/jboss/wildfly/standalone/deployments/
我这样配置我的 MDB:
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "My.Test.Queue")
})
我在同一网络上启动了两个 Docker 容器:
docker network create testnetwork
docker run --network=testnetwork -d -p 8080:8080 --name app-test-container app-test
docker run --network=testnetwork -d -p 1414:1414 -p 9443:9443 --name queue-test-container queue-test
但是,我收到以下错误:
AMQ153005: Unable to retrieve "MY.TEST.QUEUE" from JNDI.
Creating a new "javax.jms.Queue" named "jms.queue.MY.TEST.QUEUE" to be used by the MDB.
因此,出于某种原因,MDB 似乎尝试寻找 JNDI 资源,而不是实际提供的名称的队列。为什么会这样?
请尝试添加
@ActivationConfigProperty(propertyName = "useJNDI", propertyValue = "false")
。