用于外部系统的多个DefaultMessageListenerContainer

时间:2019-01-13 14:15:04

标签: spring jms integration spring-jms

我的应用程序应该与两个外部系统A和B通讯。因此,我实际上正在创建2个这样的容器:

from flask import Flask
from flask_restplus import Resource, Api
from flask_restplus.api import Swagger
import requests
import json, yaml

app = Flask(__name__)                  #  Create a Flask WSGI application
api = Api(app)                         #  Create a Flask-RESTPlus API

@api.route('/hello')                   #  Create a URL route to this resource
class HelloWorld(Resource):            #  Create a RESTful resource
    def get(self):                  
        return {'hello': 'world'}

@api.route('/swagger.yml')
class HelloWorld(Resource):    
    def get(self):
       url = 'http://localhost:5000/swagger.json'       
       resp = requests.get(url)
       data = json.loads(resp.content)    
       with open('yamldoc.yml', 'w') as yamlf:
           yaml.dump(data, yamlf, allow_unicode=True)
       return {"message":"Yaml document generated!"}


if __name__ == '__main__':
    app.run(debug=True) 

连接工厂的创建是这样的:

private DefaultMessageListenerContainer createContainer(Conf conf) {
    DefaultMessageListenerContainer jmsCnr= new DefaultMessageListenerContainer();
    jmsCnr.setConnectionFactory(connectionFactoryAdapter);
    jmsCnr.setDestinationResolver(destinationResolver);
    jmsCnr.setDestinationName(destinationName);
    jmsCnr.setMessageListener(MyClass);
    jmsCnr.initialize();
    return jmsCnr;
}

在创建容器之后,我将其循环并调用start()。 一切正常,如果消息发送到外部系统A,我的侦听器正在接收消息。

但是,如果我将启动类配置为为外部系统A和B创建两个容器,那么我不会从系统A的队列中接收消息,而是从系统B的消息中接收消息。

同样,我使用的是没有Spring上下文的spring实现,一切都是程序化的。

我的问题是,我在哪里缺少什么?似乎为外部系统B创建的第二个DefaultMessageListenerContainer实例正在覆盖前一个。

0 个答案:

没有答案