Nano Hash - криптовалюты, майнинг, программирование

WSO2 rabbitMQ - каналы созданы и не закрыты - проблема с утечкой памяти

Я использую WSO2 ESB с RabbitMQ, у меня есть один прокси-сервис и одна последовательность.

Прокси-сервис работает как потребитель для очереди RabbitMQ (через транспорт rabbitmq), потребляемые сообщения отправляются в конечную точку HTTP.

Последовательность работает как производитель, добавляя действия в очередь, вызывая конечную точку.

У меня также есть API, который для каждого вызова вставляет в очередь. Все работает корректно, но каждый раз, когда мы вызываем API, в кроличьей очереди создается много каналов без их закрытия, вызывая проблему «утечки памяти» на машине Rabbit server.

Мы пытались создать "прямой" и "разветвленный" обмен, но не решили проблему с утечкой памяти.

Под кодом последовательности:

<sequence name="add-insertqueue-tostore" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
    <property name="FORCE_SC_ACCEPTED" scope="axis2" type="STRING" value="true"/>
    <property name="OUT_ONLY" scope="default" type="STRING" value="true"/>
    <call>
        <endpoint key="gov:endpoints/rabbit/insert-toqueue.xml"/>
    </call>
    <log level="full">
        <property name="Sequence" value="AddToQueue"/>
        <property name="step" value="Message inserted"/>
    </log>
    <property name="FORCE_SC_ACCEPTED" scope="axis2" type="STRING" value="false"/>
    <property name="OUT_ONLY" scope="default" type="STRING" value="false"/>
</sequence>

под кодом конечной точки

<endpoint name="insert-toqueue" xmlns="http://ws.apache.org/ns/synapse">
    <address uri="rabbitmq:/AMQPProxy?rabbitmq.server.host.name=rabbit.server&amp;rabbitmq.server.port=5672&amp;rabbitmq.server.user.name=username&amp;rabbitmq.server.password=password&amp;rabbitmq.queue.name=queue&amp;rabbitmq.server.virtual.host=/virtual-host&amp;rabbitmq.exchange.name=exchange"/>
</endpoint>

под кодом потребителя

<proxy name="rabbit-consumer" startOnLoad="true" trace="enable" transports="rabbitmq" xmlns="http://ws.apache.org/ns/synapse">
    <target>
        <inSequence>
            <property action="remove" name="SOAPAction" scope="transport"/>
            <property action="remove" name="WSAction" scope="transport"/>
            <property name="ContentType" scope="transport" type="STRING" value="application/json"/>
            <property name="messageType" scope="axis2" type="STRING" value="application/json"/>
            <property name="HTTP_METHOD" scope="axis2" type="STRING" value="POST"/>
            <property expression="json-eval($.name)" name="name" scope="default" type="STRING"/>
            <property expression="json-eval($.surname)" name="surname" scope="default" type="STRING"/>
            <log level="full"/>
            <call-template target="my-template">
                <with-param name="name" value="{get-property('name')}" xmlns:ns="http://org.apache.synapse/xsd"/>
                <with-param name="surname" value="{get-property('surname')}" xmlns:ns="http://org.apache.synapse/xsd"/>
            </call-template>
            <property name="OUT_ONLY" scope="default" type="STRING" value="true"/>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </target>
    <parameter name="rabbitmq.exchange.type">fanout</parameter>
    <parameter name="rabbitmq.exchange.name">exchange</parameter>
    <parameter name="rabbitmq.queue.name">queue</parameter>
    <parameter name="rabbitmq.connection.factory">AMQPConnectionFactory</parameter>
</proxy>

Вы знаете, как решить эту проблему? большое спасибо


Ответы:


1

Пробовали перезагрузить?

Обычно это работает.

Пока

08.10.2019

2

При настройке отправителя RabbitMQ, возможно, вы можете попробовать «кэшированный».

<transportSender name="rabbitmq" class="org.apache.axis2.transport.rabbitmq.RabbitMQSender">
   <parameter name="CachedRabbitMQConnectionFactory" locked="false">
     <parameter name="rabbitmq.server.host.name" locked="false">localhost</parameter>
     <parameter name="rabbitmq.server.port" locked="false">5672</parameter>
     <parameter name="rabbitmq.server.user.name" locked="false">user</parameter>
     <parameter name="rabbitmq.server.password" locked="false">abc123</parameter>
   </parameter>
</transportSender>

Ссылка на документ: https://docs.wso2.com/display/EI611/RabbitMQ+AMQP+Transport

11.10.2019
  • Привет, Хасита, мы попробовали ваше решение, но после каждого звонка всегда создаются новые каналы :-( 11.11.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..