1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2026-05-18 09:51:28 +02:00

Main build (Jenkins)

This commit is contained in:
Vitaly the Alpaca (bot)
2026-05-08 09:31:52 +03:00
parent 36814f7c34
commit 76fd74a133
19 changed files with 11447 additions and 11199 deletions
+1 -1
View File
@@ -1 +1 @@
FE9583A0D8CF92948EC03E9078174E51197D84266391D0B420140131FA46CA2F
0F1A440D31B37ACCCE442992444BA0F57194948CC274E6B4EC914BEDF7A79988
+124
View File
@@ -0,0 +1,124 @@
---
id: ZeroMQ
sidebar_class_name: ZeroMQ
keywords: [1C, 1C, 1C:Enterprise, 1C:Enterprise 8.3, API, Integration, Services, Exchange, OneScript, CLI, ZeroMQ]
---
<img src={require('../../static/img/APIs/ZeroMQ.png').default} width='64px' />
# ZeroMQ
import LibraryIntro from '@site/src/components/LibraryIntro';
<LibraryIntro module="OPI_ZeroMQ" cli="" use="oint/api/zeromq" lang="en"/>
This section is dedicated to the library for working with ZeroMQ in 1C:Enterprise and OneScript. This page describes all the actions necessary to get started
## Getting Started
ZeroMQ is a high-performance asynchronous messaging library that provides sockets operating over various transports (TCP, IPC, in-process). The library supports several messaging patterns.
### Messaging Patterns
The library supports the following ZeroMQ patterns:
#### 1. Request-Reply (REQ/REP)
Synchronous request-reply pattern. The client sends a request and waits for a response from the server.
**Client:**
```bsl
Address = "tcp://localhost:5555";
Connection = OPI_ZeroMQ.CreateConnectionReq(Address);
Data = GetBinaryDataFromString("Hello, server!");
Result = OPI_ZeroMQ.ProcessRequest(Connection, Data, 5000, 5000);
```
**Server:**
```bsl
Port = 5555;
Connection = OPI_ZeroMQ.OpenPortRep(Port);
Result = OPI_ZeroMQ.GetData(Connection, -1);
Response = GetBinaryDataFromString("Server response");
OPI_ZeroMQ.SendData(Connection, Response);
```
#### 2. Publish-Subscribe (PUB/SUB)
Publish-subscribe pattern. The publisher sends messages to all subscribers on specific topics.
**Publisher:**
```bsl
Port = 5556;
Connection = OPI_ZeroMQ.OpenPortPub(Port);
Data = GetBinaryDataFromString("topic1:Message on topic 1");
OPI_ZeroMQ.SendData(Connection, Data);
```
**Subscriber:**
```bsl
Address = "tcp://localhost:5556";
Connection = OPI_ZeroMQ.CreateConnectionSub(Address);
// Subscribe to topic
OPI_ZeroMQ.Subscribe(Connection, "topic1");
// Receive messages
Result = OPI_ZeroMQ.GetData(Connection, -1);
```
#### 3. Pipeline (PUSH/PULL)
Pipeline processing pattern. Tasks are distributed among workers.
**Task sender:**
```bsl
Address = "tcp://localhost:5557";
Connection = OPI_ZeroMQ.CreateConnectionPush(Address);
Data = GetBinaryDataFromString("Task for processing");
OPI_ZeroMQ.SendData(Connection, Data);
```
**Task worker:**
```bsl
Port = 5557;
Connection = OPI_ZeroMQ.OpenPortPull(Port);
Result = OPI_ZeroMQ.GetData(Connection, -1);
// Process received task
```
### Working with Timeouts
All data sending and receiving methods support timeouts (in milliseconds):
- **-1** or **Undefined** — wait without timeout (blocking mode)
- **0** — non-blocking mode (immediate return)
- **> 0** — wait for the specified number of milliseconds
```bsl
// Wait without timeout
Result = OPI_ZeroMQ.GetData(Connection, -1);
// Non-blocking receive
Result = OPI_ZeroMQ.GetData(Connection, 0);
// Wait 5 seconds
Result = OPI_ZeroMQ.GetData(Connection, 5000);
```
### Closing Connections
After completing work, connections must be closed:
```bsl
OPI_ZeroMQ.CloseConnection(Connection);
```
:::important
It is recommended to always close connections after completing work for proper resource release
:::
+124
View File
@@ -0,0 +1,124 @@
---
id: ZeroMQ
sidebar_class_name: ZeroMQ
keywords: [1C, 1С, 1С:Предприятие, 1С:Предприятие 8.3, API, Интеграция, Сервисы, Обмен, OneScript, CLI, ZeroMQ]
---
<img src={require('../../static/img/APIs/ZeroMQ.png').default} width='64px' />
# ZeroMQ
import LibraryIntro from '@site/src/components/LibraryIntro';
<LibraryIntro module="OPI_ZeroMQ" cli="" use="oint/api/zeromq" lang="ru"/>
Этот раздел посвящен библиотеке для работы с ZeroMQ в 1С:Предприятие и OneScript. На данной странице описаны все действия, необходимые для полноценного начала работы
## Начало работы
ZeroMQ — это высокопроизводительная библиотека асинхронного обмена сообщениями, которая предоставляет сокеты, работающие поверх различных транспортов (TCP, IPC, in-process). Библиотека поддерживает несколько паттернов обмена сообщениями.
### Паттерны обмена сообщениями
Библиотека поддерживает следующие паттерны работы с ZeroMQ:
#### 1. Request-Reply (REQ/REP)
Паттерн синхронного запрос-ответ. Клиент отправляет запрос и ожидает ответ от сервера.
**Клиент:**
```bsl
Адрес = "tcp://localhost:5555";
Соединение = OPI_ZeroMQ.СоздатьСоединениеReq(Адрес);
Данные = ПолучитьДвоичныеДанныеИзСтроки("Привет, сервер!");
Результат = OPI_ZeroMQ.ОбработатьЗапрос(Соединение, Данные, 5000, 5000);
```
**Сервер:**
```bsl
Порт = 5555;
Соединение = OPI_ZeroMQ.ОткрытьПортRep(Порт);
Результат = OPI_ZeroMQ.ПолучитьДанные(Соединение, -1);
Ответ = ПолучитьДвоичныеДанныеИзСтроки("Ответ сервера");
OPI_ZeroMQ.ОтправитьДанные(Соединение, Ответ);
```
#### 2. Publish-Subscribe (PUB/SUB)
Паттерн публикации-подписки. Издатель рассылает сообщения всем подписчикам по определенным темам.
**Издатель:**
```bsl
Порт = 5556;
Соединение = OPI_ZeroMQ.ОткрытьПортPub(Порт);
Данные = ПолучитьДвоичныеДанныеИзСтроки("topic1:Сообщение по теме 1");
OPI_ZeroMQ.ОтправитьДанные(Соединение, Данные);
```
**Подписчик:**
```bsl
Адрес = "tcp://localhost:5556";
Соединение = OPI_ZeroMQ.СоздатьСоединениеSub(Адрес);
// Подписка на тему
OPI_ZeroMQ.Подписаться(Соединение, "topic1");
// Получение сообщений
Результат = OPI_ZeroMQ.ПолучитьДанные(Соединение, -1);
```
#### 3. Pipeline (PUSH/PULL)
Паттерн конвейерной обработки. Задачи распределяются между обработчиками.
**Отправитель задач:**
```bsl
Адрес = "tcp://localhost:5557";
Соединение = OPI_ZeroMQ.СоздатьСоединениеPush(Адрес);
Данные = ПолучитьДвоичныеДанныеИзСтроки("Задача для обработки");
OPI_ZeroMQ.ОтправитьДанные(Соединение, Данные);
```
**Обработчик задач:**
```bsl
Порт = 5557;
Соединение = OPI_ZeroMQ.ОткрытьПортPull(Порт);
Результат = OPI_ZeroMQ.ПолучитьДанные(Соединение, -1);
// Обработка полученной задачи
```
### Работа с таймаутами
Все методы отправки и получения данных поддерживают таймауты (в миллисекундах):
- **-1** или **Неопределено** — ожидание без таймаута (блокирующий режим)
- **0** — неблокирующий режим (немедленный возврат)
- **> 0** — ожидание указанное количество миллисекунд
```bsl
// Ожидание без таймаута
Результат = OPI_ZeroMQ.ПолучитьДанные(Соединение, -1);
// Неблокирующее получение
Результат = OPI_ZeroMQ.ПолучитьДанные(Соединение, 0);
// Ожидание 5 секунд
Результат = OPI_ZeroMQ.ПолучитьДанные(Соединение, 5000);
```
### Закрытие соединений
После завершения работы необходимо закрывать соединения:
```bsl
OPI_ZeroMQ.ЗакрытьСоединение(Соединение);
```
:::important
Рекомендуется всегда закрывать соединения после завершения работы для корректного освобождения ресурсов
:::
+11153 -11153
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1 +1 @@
FE9583A0D8CF92948EC03E9078174E51197D84266391D0B420140131FA46CA2F
0F1A440D31B37ACCCE442992444BA0F57194948CC274E6B4EC914BEDF7A79988
@@ -32,7 +32,7 @@
Function GetHashSum() Export
LastBuildHash = "FE9583A0D8CF92948EC03E9078174E51197D84266391D0B420140131FA46CA2F";
LastBuildHash = "0F1A440D31B37ACCCE442992444BA0F57194948CC274E6B4EC914BEDF7A79988";
Return LastBuildHash;
@@ -379,21 +379,21 @@ Function InitializeConnector(Val AddressPort, Val View)
ZMQ = OPI_AddIns.GetAddIn("ZeroMQ");
If View = "ConnectReq" Then
Result = ZMQ.ConnectReq(AddressPort);
Result = ZMQ.ConnectReq(AddressPort);
ElsIf View = "ConnectSub" Then
Result = ZMQ.ConnectSub(AddressPort);
Result = ZMQ.ConnectSub(AddressPort);
ElsIf View = "ConnectPush" Then
Result = ZMQ.ConnectPush(AddressPort);
Result = ZMQ.ConnectPush(AddressPort);
ElsIf View = "ConnectPull" Then
Result = ZMQ.ConnectPull(AddressPort);
Result = ZMQ.ConnectPull(AddressPort);
ElsIf View = "BindRep" Then
Result = ZMQ.BindRep(AddressPort);
Result = ZMQ.BindRep(AddressPort);
ElsIf View = "BindPub" Then
Result = ZMQ.BindPub(AddressPort);
Result = ZMQ.BindPub(AddressPort);
ElsIf View = "BindPush" Then
Result = ZMQ.BindPush(AddressPort);
Result = ZMQ.BindPush(AddressPort);
ElsIf View = "BindPull" Then
Result = ZMQ.BindPull(AddressPort);
Result = ZMQ.BindPull(AddressPort);
EndIf;
Result = OPI_Tools.JsonToStructure(Result);
+5 -5
View File
@@ -440,8 +440,8 @@ Procedure ZeroMQ_SendData(FunctionParameters)
// END
OPI_TestDataRetrieval.Process(Result , "ZeroMQ", "SendData");
OPI_TestDataRetrieval.Process(Receiving, "ZeroMQ", "SendData", "Check", Message);
OPI_TestDataRetrieval.Process(Result , "ZeroMQ", "SendData");
OPI_TestDataRetrieval.Process(Receiving , "ZeroMQ", "SendData", "Check", Message);
OPI_ZeroMQ.CloseConnection(ClientObject);
OPI_ZeroMQ.CloseConnection(ServerObject);
@@ -551,9 +551,9 @@ Procedure ZeroMQ_Subscribe(FunctionParameters)
// END
OPI_TestDataRetrieval.Process(Result , "ZeroMQ", "Subscribe");
OPI_TestDataRetrieval.Process(Receiving , "ZeroMQ", "Subscribe", "Check", Message);
OPI_TestDataRetrieval.Process(NotArrived, "ZeroMQ", "Subscribe", "ForeignTopic");
OPI_TestDataRetrieval.Process(Result , "ZeroMQ", "Subscribe");
OPI_TestDataRetrieval.Process(Receiving , "ZeroMQ", "Subscribe", "Check", Message);
OPI_TestDataRetrieval.Process(NotArrived , "ZeroMQ", "Subscribe", "ForeignTopic");
OPI_ZeroMQ.CloseConnection(ClientObject);
OPI_ZeroMQ.CloseConnection(ServerObject);
+5 -5
View File
@@ -442,8 +442,8 @@ Procedure ZeroMQ_SendData(FunctionParameters)
// END
OPI_TestDataRetrieval.ProcessCLI(Result , "ZeroMQ", "SendData");
OPI_TestDataRetrieval.ProcessCLI(Receiving, "ZeroMQ", "SendData", "Check", Message);
OPI_TestDataRetrieval.ProcessCLI(Result , "ZeroMQ", "SendData");
OPI_TestDataRetrieval.ProcessCLI(Receiving , "ZeroMQ", "SendData", "Check", Message);
OPI_ZeroMQ.CloseConnection(ClientObject);
OPI_ZeroMQ.CloseConnection(ServerObject);
@@ -553,9 +553,9 @@ Procedure ZeroMQ_Subscribe(FunctionParameters)
// END
OPI_TestDataRetrieval.ProcessCLI(Result , "ZeroMQ", "Subscribe");
OPI_TestDataRetrieval.ProcessCLI(Receiving , "ZeroMQ", "Subscribe", "Check", Message);
OPI_TestDataRetrieval.ProcessCLI(NotArrived, "ZeroMQ", "Subscribe", "ForeignTopic");
OPI_TestDataRetrieval.ProcessCLI(Result , "ZeroMQ", "Subscribe");
OPI_TestDataRetrieval.ProcessCLI(Receiving , "ZeroMQ", "Subscribe", "Check", Message);
OPI_TestDataRetrieval.ProcessCLI(NotArrived , "ZeroMQ", "Subscribe", "ForeignTopic");
OPI_ZeroMQ.CloseConnection(ClientObject);
OPI_ZeroMQ.CloseConnection(ServerObject);
+1 -1
View File
@@ -1 +1 @@
FE9583A0D8CF92948EC03E9078174E51197D84266391D0B420140131FA46CA2F
0F1A440D31B37ACCCE442992444BA0F57194948CC274E6B4EC914BEDF7A79988
+8 -8
View File
@@ -379,21 +379,21 @@ Function InitializeConnector(Val AddressPort, Val View)
ZMQ = OPI_AddIns.GetAddIn("ZeroMQ");
If View = "ConnectReq" Then
Result = ZMQ.ConnectReq(AddressPort);
Result = ZMQ.ConnectReq(AddressPort);
ElsIf View = "ConnectSub" Then
Result = ZMQ.ConnectSub(AddressPort);
Result = ZMQ.ConnectSub(AddressPort);
ElsIf View = "ConnectPush" Then
Result = ZMQ.ConnectPush(AddressPort);
Result = ZMQ.ConnectPush(AddressPort);
ElsIf View = "ConnectPull" Then
Result = ZMQ.ConnectPull(AddressPort);
Result = ZMQ.ConnectPull(AddressPort);
ElsIf View = "BindRep" Then
Result = ZMQ.BindRep(AddressPort);
Result = ZMQ.BindRep(AddressPort);
ElsIf View = "BindPub" Then
Result = ZMQ.BindPub(AddressPort);
Result = ZMQ.BindPub(AddressPort);
ElsIf View = "BindPush" Then
Result = ZMQ.BindPush(AddressPort);
Result = ZMQ.BindPush(AddressPort);
ElsIf View = "BindPull" Then
Result = ZMQ.BindPull(AddressPort);
Result = ZMQ.BindPull(AddressPort);
EndIf;
Result = OPI_Tools.JsonToStructure(Result);
+5 -5
View File
@@ -440,8 +440,8 @@ Procedure ZeroMQ_SendData(FunctionParameters)
// END
OPI_TestDataRetrieval.Process(Result , "ZeroMQ", "SendData");
OPI_TestDataRetrieval.Process(Receiving, "ZeroMQ", "SendData", "Check", Message);
OPI_TestDataRetrieval.Process(Result , "ZeroMQ", "SendData");
OPI_TestDataRetrieval.Process(Receiving , "ZeroMQ", "SendData", "Check", Message);
OPI_ZeroMQ.CloseConnection(ClientObject);
OPI_ZeroMQ.CloseConnection(ServerObject);
@@ -551,9 +551,9 @@ Procedure ZeroMQ_Subscribe(FunctionParameters)
// END
OPI_TestDataRetrieval.Process(Result , "ZeroMQ", "Subscribe");
OPI_TestDataRetrieval.Process(Receiving , "ZeroMQ", "Subscribe", "Check", Message);
OPI_TestDataRetrieval.Process(NotArrived, "ZeroMQ", "Subscribe", "ForeignTopic");
OPI_TestDataRetrieval.Process(Result , "ZeroMQ", "Subscribe");
OPI_TestDataRetrieval.Process(Receiving , "ZeroMQ", "Subscribe", "Check", Message);
OPI_TestDataRetrieval.Process(NotArrived , "ZeroMQ", "Subscribe", "ForeignTopic");
OPI_ZeroMQ.CloseConnection(ClientObject);
OPI_ZeroMQ.CloseConnection(ServerObject);
+5 -5
View File
@@ -442,8 +442,8 @@ Procedure ZeroMQ_SendData(FunctionParameters)
// END
OPI_TestDataRetrieval.ProcessCLI(Result , "ZeroMQ", "SendData");
OPI_TestDataRetrieval.ProcessCLI(Receiving, "ZeroMQ", "SendData", "Check", Message);
OPI_TestDataRetrieval.ProcessCLI(Result , "ZeroMQ", "SendData");
OPI_TestDataRetrieval.ProcessCLI(Receiving , "ZeroMQ", "SendData", "Check", Message);
OPI_ZeroMQ.CloseConnection(ClientObject);
OPI_ZeroMQ.CloseConnection(ServerObject);
@@ -553,9 +553,9 @@ Procedure ZeroMQ_Subscribe(FunctionParameters)
// END
OPI_TestDataRetrieval.ProcessCLI(Result , "ZeroMQ", "Subscribe");
OPI_TestDataRetrieval.ProcessCLI(Receiving , "ZeroMQ", "Subscribe", "Check", Message);
OPI_TestDataRetrieval.ProcessCLI(NotArrived, "ZeroMQ", "Subscribe", "ForeignTopic");
OPI_TestDataRetrieval.ProcessCLI(Result , "ZeroMQ", "Subscribe");
OPI_TestDataRetrieval.ProcessCLI(Receiving , "ZeroMQ", "Subscribe", "Check", Message);
OPI_TestDataRetrieval.ProcessCLI(NotArrived , "ZeroMQ", "Subscribe", "ForeignTopic");
OPI_ZeroMQ.CloseConnection(ClientObject);
OPI_ZeroMQ.CloseConnection(ServerObject);
@@ -32,7 +32,7 @@
Function GetHashSum() Export
LastBuildHash = "FE9583A0D8CF92948EC03E9078174E51197D84266391D0B420140131FA46CA2F";
LastBuildHash = "0F1A440D31B37ACCCE442992444BA0F57194948CC274E6B4EC914BEDF7A79988";
Return LastBuildHash;
+1 -1
View File
@@ -1 +1 @@
FE9583A0D8CF92948EC03E9078174E51197D84266391D0B420140131FA46CA2F
0F1A440D31B37ACCCE442992444BA0F57194948CC274E6B4EC914BEDF7A79988
@@ -32,7 +32,7 @@
Function GetHashSum() Export
LastBuildHash = "FE9583A0D8CF92948EC03E9078174E51197D84266391D0B420140131FA46CA2F";
LastBuildHash = "0F1A440D31B37ACCCE442992444BA0F57194948CC274E6B4EC914BEDF7A79988";
Return LastBuildHash;
+1 -1
View File
@@ -1 +1 @@
FE9583A0D8CF92948EC03E9078174E51197D84266391D0B420140131FA46CA2F
0F1A440D31B37ACCCE442992444BA0F57194948CC274E6B4EC914BEDF7A79988
@@ -32,7 +32,7 @@
Function GetHashSum() Export
LastBuildHash = "FE9583A0D8CF92948EC03E9078174E51197D84266391D0B420140131FA46CA2F";
LastBuildHash = "0F1A440D31B37ACCCE442992444BA0F57194948CC274E6B4EC914BEDF7A79988";
Return LastBuildHash;
+1 -1
View File
@@ -1 +1 @@
FE9583A0D8CF92948EC03E9078174E51197D84266391D0B420140131FA46CA2F
0F1A440D31B37ACCCE442992444BA0F57194948CC274E6B4EC914BEDF7A79988