- Настройте данные доступа к кластеру RabbitMQ и HTTP сервисам «1С: Предприятие 8», Corezoid и Camunda BPM (src\FoxyLink.Core\appsettings.json)
{
"HostData": {
"ServiceName": "FoxyLinkService",
"ServiceDisplayName": "FoxyLink.RabbitMQ Service",
"ServiceDescription": "FoxyLink.RabbitMQ (extract, transform, deliver messages to the «1C:Enterprise 8» consumers)"
},
"AccessData": {
"AppEndpoints": [
{
"Name": "yt11",
"Login": "login",
"Password": "password",
"Schema": "http",
"ServerName": "1cweb.ktc.local:9292",
"PathOnServer": "yt11/hs/AppEndpoint/v1"
},
{
"Name": "dt11",
"Login": "login",
"Password": "password",
"Schema": "http",
"ServerName": "wall-e.ktc.local:8085",
"PathOnServer": "dt/hs/AppEndpoint/v1"
},
{
"Name": "corezoid",
"Login": "",
"Password": "",
"Schema": "https",
"ServerName": "new.corezoid.com",
"PathOnServer": "api/1/json"
},
{
"Name": "bpmn",
"Login": "login",
"Password": "password",
"Schema": "http",
"ServerName": "bpmn.ktc.local:8080",
"PathOnServer": "engine-rest/message"
}
],
"RabbitMQ": {
"AmqpUri": "amqp://login:password@host:port/vhost",
"Queues": [
{
"Name": "foxylink",
"NodesCount": 1,
"PrefetchCount": 1
},
{
"Name": "1c.foxylink",
"NodesCount": 2,
"PrefetchCount": 2
},
{
"Name": "bpmn.order-cycle",
"NodesCount": 3,
"PrefetchCount": 1
}
],
"RetryInMilliseconds": [ "30000", "60000", "300000", "900000", "1800000", "3600000", "7200000", "14400000" ]
}
}
}
Name
— уникальный идентификатор базы данных;
Login
— имя пользователя на указанном сервере в базе данных «1С:Предприятие 8»;
Password
— пароль пользователя на указанном сервере в базе данных «1С:Предприятие 8»;
Schema
— обычно это http
или https
;
ServerName
— хост и порт сервера, с которым осуществляется соединение;
PathOnServer
— cтрока http
/https
-ресурса, к которому будет отправлен запрос.
AmqpUri
— данные доступа к кластеру RabbitMQ;
Queues
— описывает список создаваемых очередей:
• Name
— имя создаваемой очереди;
• NodesCount
— количество параллельных потребителей(обработчиков) очереди;
• PrefetchCount
— количество сообщений доставляемых потребителю(обработчику) при событии Ack;
RetryInMilliseconds
— количество повторных попыток (равна количеству элементов в массиве) и время через которое будет выполнена повторная попытка в миллисекундах; Если значение задано будут созданы очереди Name.retry
.
Starting with .NET Core 3.0, you don't have to run dotnet restore
because it's run implicitly by all commands, such as dotnet build
and dotnet run
, that require a restore to occur.
> dotnet publish -c Release
> sc create FoxyLink.RabbitMQ binPath="<ReleasePath>\FoxyLink.Core.exe" displayname= "FoxyLink.RabbitMQ (extract, transform, deliver messages to the «1C:Enterprise 8» consumers)"
> sc start FoxyLink.RabbitMQ
После успешной установки и запуска сервиса в кластере RabbitMQ должен появится новый потребитель сообщений.
> sc stop FoxyLink.RabbitMQ
> sc delete FoxyLink.RabbitMQ
Обратите внимание, что служба может отображаться как disabled
в течение некоторого времени, пока все инструменты, обращающиеся к API сервисам windows, не будут закрыты.
Просмотрите этот Stackoverflow вопрос.
> docker build -t fl-core .
> docker-compose up -d
Для успешной доставки сообщения из очередей у каждого сообщения должно быть заполнено:
-
content_type
— тип содержимого, например:application/json
,text/html
и другие; -
type
(FoxyLink) — должен состоять из четырех частей, напримерerp.bunny.send.sync
.- часть
erp
— должна соответствовать одному из заданых имен (полеName
) в файлеappsettings.json
в разделеAppEndpoints
. Если соответствие найдено сообщение будет отправлено на указанный адрес HTTP-сервиса, в противном случае сообщение будет сброшено в очередьfoxylink.invalid
; bunny
— предназначено для подсистемы FoxyLink и описывает имя настроек обмена (Catalog.FL_Exchanges).send
— идентифицирует операцию связанную с сообщением (Catalog.FL_Operations);sync
илиasync
— указывает для подсистемы FoxyLink как следует выполнить операцию: синхронно или ассинхронно соответственно.
Нет обязательной необходимости устанавливать подсистему FoxyLink в «1С:Предприятие 8», вы можете самостоятельно обрабатывать сообщения на стороне базы данных, но для корректной работы сервиса данные два поля (
content_type
иtype
) должны всегда быть заполнены. - часть
type
(Corezoid) — должен состоять из четырех частей, напримерcorezoid.public.452145.17858a4a7a1c42339a40e05f4f989e79fcd7fb63
.- часть
corezoid
— должна соответствовать одному из заданых имен (полеName
) в файлеappsettings.json
в разделеAppEndpoints
. Если соответствие найдено сообщение будет отправлено на указанный адрес HTTPS-сервиса, в противном случае сообщение будет сброшено в очередьfoxylink.invalid
; public
— предназначено для облачной ОС Corezoid, поле статичное и не изменяется;452145
— идентифицирует номер процесса облачной ОС Corezoid;17858a4a7a1c42339a40e05f4f989e79fcd7fb63
— 40-символьный идентификатор процеса Corezoid, после успешного выполнения будет начат новый процесс (например,452145
) в системе Corezoid и данные тела сообщения будут помещены в этот процесс.
- часть
content_type
—application/json
;type
(Camunda BPM) — должен состоять из одной части, напримерbpmn
.- часть
bpmn
— должна соответствовать одному из заданых имен (полеName
) в файлеappsettings.json
в разделеAppEndpoints
. Если соответствие найдено сообщение будет отправлено на указанный адрес HTTPS-сервиса, в противном случае сообщение будет сброшено в очередьfoxylink.invalid
;
- часть
Проекты с открытым исходным кодом развиваются более плавно, когда обсуждения публичны.
Если вы обнаружили ошибку, сообщите об этом в FoxyLink GitHub Issues. Приветствуются подробные отчеты с вызовами стека, реальным и ожидаемым поведением.
Если у вас есть какие-либо вопросы, проблемы, связанные с использованием подсистемы FoxyLink или если вы хотите обсудить новые функции, посетите чат