Внешняя компонента для 1С:Предприятие
клиент RabbitMQ Streams
.
Компонента написана на Rust
и основана на официальной библиотеке rabbitmq-stream-rust-client.
Ссылки:
- https://www.rabbitmq.com/docs/streams - документация по стримам.
- https://rabbitmq.github.io/rabbitmq-stream-java-client/stable/htmlsingle/ - документация
Java
клиента, но т.к. дляRust
клиента такой документации нет, то лучше читать эту. - https://github.com/rabbitmq/rabbitmq-stream-rust-client/tree/main/examples - примеры на
Rust
, чтобы понять как можно реализовать ту или иную фукциональность.
Реализованы не все возможности. Примеры кода смотри в тестах:
В компоненте реализованы 2 объекта:
RabbitMQ.Stream.Producer
RabbitMQ.Stream.Consumer
Но каждый из них включает функциональность объекта EnvironmentBuilder
, т.к. технология внешних компонент не позволяет передавать объекты.
LastError: Строка
- в случае исключения будет содержать текст ошибки.
Методы:
SetHost(host: Строка)
SetPort(port: Число)
SetUsername(username: Строка)
SetPassword(password: Строка)
SetVirtualHost(host: Строка)
SetHeartbeat(heartbeat: Число)
SetLoadBalancerMode(mode: Булево)
AddClientCertificatesKeys(certificate_path: Строка, private_key_path: Строка)
AddRootCertificates(certificate_path: Строка)
TrustCertificates(trust_certificates: Булево)
Методы:
SetName(name: Строка)
- имя продюсера, имеет смысл вызывать до методаBuild
.Build(stream: Строка)
- создает продюсера, после этого можно отправлять сообщения.SetApplicationProperty(key: Строка, value: Строка|Число|Булево|Дата|ДвоичныеДанные)
- устанавливает свойства для нового сообщения.AddMessage(data: ДвоичныеДанные)
- добавляет сообщение во внутренний массив, сообщению также устанавливаютсяApplicationProperties
, установленные методомSetApplicationProperty
.BatchSend()
- отправляет все накопленные сообщения, в случае ошибки будет брошено исключение.Statuses(): Строка
- возвращает статусы отправленных сообщений, имеет смысл смотреть в случае неуспешного выполнения методаBatchSend
.
Методы:
SetName(name: Строка)
- имя консьюмера, имеет смысл вызывать до методаBuild
.Build(stream: Строка)
- создает консьюмера, после этого можно получать сообщения.Recv(timeout: Число): Булево
- таймаут задается в миллсекундах, возвращаетИстина
- если сообщение получено,Ложь
- если вышел таймаут.MessageBody(): ДвоичныеДанные
- возвращает тело последнего сообщения.ApplicationProperty(key: Строка): Строка|Число|Булево|Дата|ДвоичныеДанные|Неопределено
- возвращает значение свойства, либоНеопределено
, если свойство отсутствует.Offset(): ДвоичныеДанные
- возвращает смещение, которое представляет собой числоu64
но в видеДвоичныеДанные
, т.к. технология не позволяет передавать целыен числа большеi32
.StoreOffset(offset: ДвоичныеДанные)
- сохраняет оффсет, которые передается в формате числаu64
записанное вДвоичныеДанные
, этот метод требуется вызывать, чтобы подтвердить получение сообщений.