Как мне подключиться к RabbitMQ из моего приложения ReactJS? - PullRequest
0 голосов
/ 05 ноября 2019

У меня проблемы с подключением к экземпляру RabbitMQ, и я не могу найти хороший учебник или руководство для этого. Я могу подключиться к веб-сокету RabbitMQ с помощью

var ws = new WebSocket('ws://localhost:15674/ws')

Но теперь я не знаю, как подключиться к кластеру с помощью учетных данных. Мне также нужно использовать сообщения из очереди, подобной этой /exchange/myExchange/routingKey. Я смог легко сделать это в угловом приложении, используя RxStompService со следующим кодом


  rxStompService.configure({
          brokerURL: `ws://localhost:15674/ws`,
          connectHeaders: {
            login: 'guest',
            passcode: 'guest'
          },
          heartbeatIncoming: 0, // Typical value 0 - disabled
          heartbeatOutgoing: 20000, // Typical value 20000 - every 20 seconds
          reconnectDelay: 200,
          debug: (msg: string): void => {
            console.log(new Date(), msg);
          }
        })

  this.exchange = 'myExchange'
  this.routingKey = 'routingKey'
  this.headers ={
    'x-queue-name': 'myQueue',
    'durable': 'true',
    'auto-delete': 'false'
  }

  ngOnInit() {
    this.rxStompService.watch(`/exchange/${this.exchange}/${this.routingKey}`, this.headers ).subscribe((message: Message) => {
     this.user = new User(JSON.parse(message.body))
    });
  }

Как я могу сделать то же самое, но из моего приложения реакции?

1 Ответ

0 голосов
/ 05 ноября 2019

Мне удалось подключиться и подписаться на очередь с помощью stompjs.

import Stomp from 'stompjs'


export function connectRabbit(){

let stompClient

    var ws = new WebSocket('ws://localhost:15674/ws')

    const headers = {
        'login': 'guest',
        'passcode': 'guest',
        'durable': 'true',
        'auto-delete': 'false'
    }
    stompClient = Stomp.over(ws)

    stompClient.connect(headers , function(frame){
                console.log('Connected')
               const subscription = stompClient.subscribe('/queue/myQueue', function(message){
                   console.log(message)
               })
    })

}
...