Внешняя компонента для 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.ProducerRabbitMQ.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: Строка)
Методы:
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записанное вДвоичныеДанные, этот метод требуется вызывать, чтобы подтвердить получение сообщений.