我使用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应用程序编写为消费者?
答案 0 :(得分:1)
Spring AMQP适合你!
您将某些自定义queue
绑定到具有适当模式的amq.rabbitmq.trace
(例如publish.#
)并配置SimpleMessageListenerContainer
以接收来自该@EnableRabbit
的消息队列。
即使在一些POJO方法上使用非常简单的配置:@RabbitListener
和Binding
也可以完成。无论如何,@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)")
}
}
必须在那里将您的队列附加到该交换。