Маршрутизация к конкретным экземплярам XEP-0114, поддерживающим один домен в ejabberd? - PullRequest
1 голос
/ 21 апреля 2019

У меня есть простая установка ejabberd 18.09, запускающая тестовый компонент в домене: test.localhost.

Конфигурация очень проста:

port: 8888
module: ejabberd_service
hosts:
   "test.localhost":
       password: "secret"

У меня есть настройка моего компонента XEP-0114 / XMPP для запуска нескольких экземпляров через Procfile:

test1: ./testcomponent --address localhost:8888 --secret ... --name test.localhost
test2: ./testcomponent --address localhost:8888 --secret ... --name test.localhost
test3: ./testcomponent --address localhost:8888 --secret ... --name test.localhost

Теперь, когда я отправляю сообщение любому контакту под test.localhost, один из них гарантированно получит его.Замечательно!Похоже, что для любого данного компонента xmpp вы можете масштабироваться до нескольких узлов и узлов, не беспокоясь об одной точке отказа.

Есть ли способ всегда направлять сообщения, отправленные на user1@test.localhost на test1процесс выше?Может быть, с конкретным сообщением о присутствии, отправленным экземпляром test1 с user1@test.localhost в качестве контакта?

1 Ответ

1 голос
/ 24 апреля 2019

Вам следует использовать опцию «domain_balancing» со значением bare_source. Это гарантирует, что все пакеты от данного пользователя попадут в один и тот же компонент. Документация здесь: https://docs.ejabberd.im/admin/guide/advanced/

...