如何在Spring中正确获取RabbitMQ中的所有队列消息?

时间:2015-05-21 10:00:00

标签: spring rabbitmq mqtt stomp spring-websocket

我使用Spring,Spring-Websocket,STOMP作为我的应用程序,RabbitMQ作为代理。我需要将通过RabbitMQ传递的所有消息记录到Postgresql表中。 我知道我可以在Spring编写@MessageMapping并在那里登录,但我的问题是有些客户端通过MQTT协议直接与RabbitMQ通信,Spring还不支持它(https://jira.spring.io/browse/SPR-12581)。此外,浏览器客户端使用STOMP协议通过Spring与RabbitMQ进行通信。

RabbitMQ允许使用Firehose跟踪器跟踪所有消息。如何从Spring正确收听amq.rabbitmq.trace主题?或者我是否需要将单独的Java应用程序编写为消费者?

1 个答案:

答案 0 :(得分:1)

Spring AMQP适合你!

某些自定义queue绑定到具有适当模式的amq.rabbitmq.trace(例如publish.#)并配置SimpleMessageListenerContainer以接收来自该@EnableRabbit的消息队列。

即使在一些POJO方法上使用非常简单的配置:@RabbitListenerBinding也可以完成。无论如何,@Bean class ViewController: UIViewController, CLLocationManagerDelegate { @IBOutlet weak var mapView: GMSMapView! let locationManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. locationManager.delegate = self locationManager.requestAlwaysAuthorization() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { var locValue:CLLocationCoordinate2D = manager.location.coordinate println("locations = \(locValue.latitude) \(locValue.longitude)") } } 必须在那里将您的队列附加到该交换。