UNPKG

@rxap/nest-amqp

Version:
1,918 lines 76.4 kB
<!doctype html>
<html class="no-js" lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <title>nest-rabbitmq</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
	   <link rel="stylesheet" href="../styles/style.css">
        <link rel="stylesheet" href="../styles/dark.css">
    </head>
    <body>
          <script>
               // Blocking script to avoid flickering dark mode
               // Dark mode toggle button
               var useDark = window.matchMedia('(prefers-color-scheme: dark)');
               var darkModeState = useDark.matches;
               var $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
               var $darkModeToggles = document.querySelectorAll('.dark-mode-switch');
               var darkModeStateLocal = localStorage.getItem('compodoc_darkmode-state');

               function checkToggle(check) {
                    for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
                         $darkModeToggleSwitchers[i].checked = check;
                    }
               }

               function toggleDarkMode(state) {
                    if (window.localStorage) {
                         localStorage.setItem('compodoc_darkmode-state', state);
                    }

                    checkToggle(state);

                    const hasClass = document.body.classList.contains('dark');

                    if (state) {
                         for (var i = 0; i < $darkModeToggles.length; i++) {
                              $darkModeToggles[i].classList.add('dark');
                         }
                         if (!hasClass) {
                              document.body.classList.add('dark');
                         }
                    } else {
                         for (var i = 0; i < $darkModeToggles.length; i++) {
                              $darkModeToggles[i].classList.remove('dark');
                         }
                         if (hasClass) {
                              document.body.classList.remove('dark');
                         }
                    }
               }

               useDark.addEventListener('change', function (evt) {
                    toggleDarkMode(evt.matches);
               });
               if (darkModeStateLocal) {
                    darkModeState = darkModeStateLocal === 'true';
               }
               toggleDarkMode(darkModeState);
          </script>

        <div class="navbar navbar-default navbar-fixed-top d-md-none p-0">
               <div class="d-flex">
                    <a href="../" class="navbar-brand">nest-rabbitmq</a>
                    <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
               </div>
        </div>

        <div class="xs-menu menu" id="mobile-menu">
                <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div>            <compodoc-menu></compodoc-menu>
        </div>

        <div class="container-fluid main">
           <div class="row main">
               <div class="d-none d-md-block menu">
                   <compodoc-menu mode="normal"></compodoc-menu>
               </div>
               <!-- START CONTENT -->
               <div class="content class">
                   <div class="content-data">












<ol class="breadcrumb">
  <li class="breadcrumb-item">Classes</li>
  <li class="breadcrumb-item" >ServerRMQ</li>
</ol>

<ul class="nav nav-tabs" role="tablist">
        <li class="nav-item">
            <a href="#info" 
                class="nav-link"
                class="nav-link active"
                role="tab" id="info-tab" data-bs-toggle="tab" data-link="info">Info</a>
        </li>
        <li class="nav-item">
            <a href="#source" 
                class="nav-link"
                
                role="tab" id="source-tab" data-bs-toggle="tab" data-link="source">Source</a>
        </li>
</ul>

<div class="tab-content">
    <div class="tab-pane fade active in" id="info">
        <p class="comment">
            <h3>File</h3>
        </p>
        <p class="comment">
            <code>src/lib/server-rmq.ts</code>
        </p>



            <p class="comment">
                <h3>Extends</h3>
            </p>
            <p class="comment">
                        <code>Server</code>
            </p>

            <p class="comment">
                <h3>Implements</h3>
            </p>
            <p class="comment">
                        <code>CustomTransportStrategy</code>
            </p>


            <section data-compodoc="block-index">
    <h3 id="index">Index</h3>
    <table class="table table-sm table-bordered index-table">
        <tbody>
                <tr>
                    <td class="col-md-4">
                        <h6><b>Properties</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                    <span class="modifier">Protected</span>
                                <a href="#channel" >channel</a>
                            </li>
                            <li>
                                    <span class="modifier">Protected</span>
                                <a href="#connectionAttempts" >connectionAttempts</a>
                            </li>
                            <li>
                                    <span class="modifier">Protected</span>
                                <a href="#errorSerializer" >errorSerializer</a>
                            </li>
                            <li>
                                    <span class="modifier">Protected</span>
                                <a href="#queue" >queue</a>
                            </li>
                            <li>
                                    <span class="modifier">Protected</span>
                                <a href="#server" >server</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Readonly</span>
                                <a href="#transportId" >transportId</a>
                            </li>
                        </ul>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <h6><b>Methods</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier"></span>
                                <a href="#addHandler" >addHandler</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#bindQueue" >bindQueue</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#close" >close</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#createClient" >createClient</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier"></span>
                                    <span class="modifier">Async</span>
                                <a href="#handleEvent" >handleEvent</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Async</span>
                                <a href="#handleMessage" >handleMessage</a>
                            </li>
                            <li>
                                    <span class="modifier">Protected</span>
                                    <span class="modifier"></span>
                                <a href="#initializeDeserializer" >initializeDeserializer</a>
                            </li>
                            <li>
                                    <span class="modifier">Protected</span>
                                    <span class="modifier"></span>
                                <a href="#initializeSerializer" >initializeSerializer</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Async</span>
                                <a href="#listen" >listen</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier"></span>
                                <a href="#send" >send</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                <a href="#sendMessage" >sendMessage</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Async</span>
                                <a href="#setupChannel" >setupChannel</a>
                            </li>
                            <li>
                                    <span class="modifier">Public</span>
                                    <span class="modifier">Async</span>
                                <a href="#start" >start</a>
                            </li>
                        </ul>
                    </td>
                </tr>





        </tbody>
    </table>
</section>

            <section data-compodoc="block-constructor">
    <h3 id="constructor">Constructor</h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
<code>constructor(options: <a href="../interfaces/ServerRmqOptions.html" target="_self">ServerRmqOptions</a>, logger: LoggerService)</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="61" class="link-to-prism">src/lib/server-rmq.ts:61</a></div>
                            </td>
                        </tr>

                <tr>
                    <td class="col-md-4">
                            <div>
                                    <b>Parameters :</b>
                                    <table class="params">
                                        <thead>
                                            <tr>
                                                <td>Name</td>
                                                    <td>Type</td>
                                                <td>Optional</td>
                                            </tr>
                                        </thead>
                                        <tbody>
                                                <tr>
                                                        <td>options</td>
                                                  
                                                        <td>
                                                                        <code><a href="../interfaces/ServerRmqOptions.html" target="_self" >ServerRmqOptions</a></code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>logger</td>
                                                  
                                                        <td>
                                                                    <code>LoggerService</code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                        </tbody>
                                    </table>
                            </div>
                    </td>
                </tr>
            </tbody>
        </table>
</section>

            <section data-compodoc="block-properties">
    
    <h3 id="inputs">
        Properties
    </h3>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="channel"></a>
                    <span class="name">
                            <span class="modifier">Protected</span>
                        <span ><b>channel</b></span>
                        <a href="#channel"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>ChannelWrapper | null</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>null</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="57" class="link-to-prism">src/lib/server-rmq.ts:57</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="connectionAttempts"></a>
                    <span class="name">
                            <span class="modifier">Protected</span>
                        <span ><b>connectionAttempts</b></span>
                        <a href="#connectionAttempts"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/number" target="_blank" >number</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>0</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="58" class="link-to-prism">src/lib/server-rmq.ts:58</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="errorSerializer"></a>
                    <span class="name">
                            <span class="modifier">Protected</span>
                        <span ><b>errorSerializer</b></span>
                        <a href="#errorSerializer"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>new ErrorSerializer()</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="61" class="link-to-prism">src/lib/server-rmq.ts:61</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="queue"></a>
                    <span class="name">
                            <span class="modifier">Protected</span>
                        <span ><b>queue</b></span>
                        <a href="#queue"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="59" class="link-to-prism">src/lib/server-rmq.ts:59</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="server"></a>
                    <span class="name">
                            <span class="modifier">Protected</span>
                        <span ><b>server</b></span>
                        <a href="#server"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>IAmqpConnectionManager | null</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>null</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="56" class="link-to-prism">src/lib/server-rmq.ts:56</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="transportId"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier">Readonly</span>
                        <span ><b>transportId</b></span>
                        <a href="#transportId"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>TRANSPORT_ID</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="54" class="link-to-prism">src/lib/server-rmq.ts:54</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
</section>

            <section data-compodoc="block-methods">
    
    <h3 id="methods">
        Methods
    </h3>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="addHandler"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier"></span>
                        <span ><b>addHandler</b></span>
                        <a href="#addHandler"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>addHandler(pattern: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>, callback: MessageHandler, isEventHandler?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank">boolean</a>, extras?: Record<any | any>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="297"
                                    class="link-to-prism">src/lib/server-rmq.ts:297</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>pattern</td>
                                            <td>
                                                            <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>callback</td>
                                            <td>
                                                        <code>MessageHandler</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>isEventHandler</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
                                            </td>

                                            <td>
                                                    Yes
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>extras</td>
                                            <td>
                                                        <code>Record&lt;any | any&gt;</code>
                                            </td>

                                            <td>
                                                    Yes
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="bindQueue"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>bindQueue</b></span>
                        <a href="#bindQueue"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>bindQueue(exchange: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, routingKey: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="88"
                                    class="link-to-prism">src/lib/server-rmq.ts:88</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>exchange</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>routingKey</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="close"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>close</b></span>
                        <a href="#close"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>close()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="83"
                                    class="link-to-prism">src/lib/server-rmq.ts:83</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="createClient"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>createClient</b></span>
                        <a href="#createClient"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>createClient()</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="167"
                                    class="link-to-prism">src/lib/server-rmq.ts:167</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>

                        </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="handleEvent"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier"></span>
                            <span class="modifier">Async</span>
                        <span ><b>handleEvent</b></span>
                        <a href="#handleEvent"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>handleEvent(pattern: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>, packet: ReadPacket, context: RmqContext)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="267"
                                    class="link-to-prism">src/lib/server-rmq.ts:267</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>pattern</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>packet</td>
                                            <td>
                                                        <code>ReadPacket</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>context</td>
                                            <td>
                                                        <code>RmqContext</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;any&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="handleMessage"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier">Async</span>
                        <span ><b>handleMessage</b></span>
                        <a href="#handleMessage"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>handleMessage(message: Record<string | any>, channel: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="201"
                                    class="link-to-prism">src/lib/server-rmq.ts:201</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>message</td>
                                            <td>
                                                        <code>Record&lt;string | any&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>channel</td>
                                            <td>
                                                            <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;void&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="initializeDeserializer"></a>
                    <span class="name">
                            <span class="modifier">Protected</span>
                            <span class="modifier"></span>
                        <span ><b>initializeDeserializer</b></span>
                        <a href="#initializeDeserializer"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>initializeDeserializer(options: <a href="../interfaces/ServerRmqOptions.html" target="_self">ServerRmqOptions</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="307"
                                    class="link-to-prism">src/lib/server-rmq.ts:307</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>options</td>
                                            <td>
                                                            <code><a href="../interfaces/ServerRmqOptions.html" target="_self" >ServerRmqOptions</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="initializeSerializer"></a>
                    <span class="name">
                            <span class="modifier">Protected</span>
                            <span class="modifier"></span>
                        <span ><b>initializeSerializer</b></span>
                        <a href="#initializeSerializer"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>initializeSerializer(options: <a href="../interfaces/ServerRmqOptions.html" target="_self">ServerRmqOptions</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="311"
                                    class="link-to-prism">src/lib/server-rmq.ts:311</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>options</td>
                                            <td>
                                                            <code><a href="../interfaces/ServerRmqOptions.html" target="_self" >ServerRmqOptions</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="listen"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier">Async</span>
                        <span ><b>listen</b></span>
                        <a href="#listen"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>listen(callback: (undefined,optionalParams: []) => void)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="73"
                                    class="link-to-prism">src/lib/server-rmq.ts:73</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>callback</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/function" target="_blank" >function</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Promise&lt;void&gt;</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="send"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier"></span>
                        <span ><b>send</b></span>
                        <a href="#send"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>send(stream$: Observable<any>, respond: (data: WritePacket) => void)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="136"
                                    class="link-to-prism">src/lib/server-rmq.ts:136</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>stream$</td>
                                            <td>
                                                        <code>Observable&lt;any&gt;</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>respond</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/function" target="_blank" >function</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>    <code>Subscription</code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="sendMessage"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                        <span ><b>sendMessage</b></span>
                        <a href="#sendMessage"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>sendMessage(message: T, replyTo: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>, correlationId: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank">string</a>)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="282"
                                    class="link-to-prism">src/lib/server-rmq.ts:282</a></div>
                        </td>
                    </tr>

                    <tr>
                        <td class="col-md-4">
                            <b>Type parameters :</b>
                            <ul class="type-parameters">
                                    <li>T</li>
                            </ul>
                        </td>
                    </tr>

            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>message</td>
                                            <td>
                                                        <code>T</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>replyTo</td>
                                            <td>
                                                            <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>correlationId</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="setupChannel"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier">Async</span>
                        <span ><b>setupChannel</b></span>
                        <a href="#setupChannel"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>setupChannel(channel: ChannelWrapper, callback?: () => void)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="172"
                                    class="link-to-prism">src/lib/server-rmq.ts:172</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>channel</td>
                                            <td>
                                                        <code>ChannelWrapper</code>
                                            </td>

                                            <td>
                                                    No
                                            </td>


                                        </tr>
                                        <tr>
                                                <td>callback</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/function" target="_blank" >function</a></code>
                                            </td>

                                            <td>
                                                    Yes
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="start"></a>
                    <span class="name">
                            <span class="modifier">Public</span>
                            <span class="modifier">Async</span>
                        <span ><b>start</b></span>
                        <a href="#start"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
                        <span class="modifier-icon icon ion-ios-reset"></span>
                    <code>start(callback?: (undefined,optionalParams?: []) => void)</code>
                </td>
            </tr>


                    <tr>
                        <td class="col-md-4">
                            <div class="io-line">Defined in <a href="" data-line="93"
                                    class="link-to-prism">src/lib/server-rmq.ts:93</a></div>
                        </td>
                    </tr>


            <tr>
                <td class="col-md-4">

                            <div class="io-description">
                                <b>Parameters :</b>
                                
                                <table class="params">
                                    <thead>
                                        <tr>
                                            <td>Name</td>
                                                <td>Type</td>
                                            <td>Optional</td>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                                <td>callback</td>
                                            <td>
                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/function" target="_blank" >function</a></code>
                                            </td>

                                            <td>
                                                    Yes
                                            </td>


                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        <div class="io-description">
                            <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>

                        </div>
                            <div class="io-description">
                                
                            </div>
                </td>
            </tr>
        </tbody>
    </table>
</section>





    </div>


    <div class="tab-pane fade  tab-source-code" id="source">
        <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {
  Logger,
  LoggerService,
} from &#x27;@nestjs/common&#x27;;
import {
  isNil,
  isString,
  isUndefined,
} from &#x27;@nestjs/common/utils/shared.utils&#x27;;
import {
  CustomTransportStrategy,
  IncomingRequest,
  MessageHandler,
  OutgoingResponse,
  ReadPacket,
  RmqContext,
  Server,
  WritePacket,
} from &#x27;@nestjs/microservices&#x27;;
import {
  CONNECT_EVENT,
  CONNECT_FAILED_EVENT,
  CONNECTION_FAILED_MESSAGE,
  DISCONNECT_EVENT,
  DISCONNECTED_RMQ_MESSAGE,
  NO_MESSAGE_HANDLER,
  RQM_NO_EVENT_HANDLER,
  RQM_NO_MESSAGE_HANDLER,
} from &#x27;@nestjs/microservices/constants&#x27;;
import { RmqRecordSerializer } from &#x27;@nestjs/microservices/serializers&#x27;;
import { ServerRmqOptions } from &#x27;./options&#x27;;
import { coerceArray } from &#x27;@rxap/utilities&#x27;;
import {
  ChannelWrapper,
  connect,
} from &#x27;amqp-connection-manager&#x27;;
import type { IAmqpConnectionManager } from &#x27;amqp-connection-manager/dist/types/AmqpConnectionManager&#x27;;
import { Message } from &#x27;amqplib&#x27;;
import {
  catchError,
  EMPTY,
  finalize,
  Observable,
  Subscription,
} from &#x27;rxjs&#x27;;
import { ErrorSerializer } from &#x27;./error.serializer&#x27;;
import { RabbitMqIncomingRequestDeserializer } from &#x27;./incoming-request.deserializer&#x27;;

const INFINITE_CONNECTION_ATTEMPTS &#x3D; -1;

export const TRANSPORT_ID &#x3D; Symbol(&#x27;RxAP_RMQ&#x27;);

export class ServerRMQ extends Server implements CustomTransportStrategy {
  public readonly transportId &#x3D; TRANSPORT_ID;

  protected server: IAmqpConnectionManager | null &#x3D; null;
  protected channel: ChannelWrapper | null &#x3D; null;
  protected connectionAttempts &#x3D; 0;
  protected queue!: string;

  protected errorSerializer &#x3D; new ErrorSerializer();

  constructor(
    protected readonly options: ServerRmqOptions,
    protected override readonly logger: LoggerService &#x3D; new Logger(Server.name),
  ) {
    super();

    this.initializeSerializer(options);
    this.initializeDeserializer(options);
  }

  public async listen(
    callback: (err?: unknown, ...optionalParams: unknown[]) &#x3D;&gt; void,
  ): Promise&lt;void&gt; {
    try {
      await this.start(callback);
    } catch (err) {
      callback(err);
    }
  }

  public close(): void {
    this.channel &amp;&amp; this.channel.close();
    this.server &amp;&amp; this.server.close();
  }

  public bindQueue(exchange: string, routingKey: string) {
    this.logger.verbose?.(&#x60;Binding queue to exchange &#x27;${ exchange }&#x27; with routing key &#x27;${ routingKey }&#x27;&#x60;, &#x27;ServerRMQ&#x27;);
    return this.channel!.bindQueue(this.queue, exchange, routingKey);
  }

  public async start(
    callback?: (err?: unknown, ...optionalParams: unknown[]) &#x3D;&gt; void,
  ) {
    this.logger.verbose?.(&#x27;Connecting to RMQ server...&#x27;, &#x27;ServerRMQ&#x27;);
    this.server &#x3D; this.createClient();
    this.server.on(CONNECT_EVENT, () &#x3D;&gt; {
      if (this.channel) {
        return;
      }
      this.channel &#x3D; this.server!.createChannel({
        json: false,
        setup: (channel: any) &#x3D;&gt; this.setupChannel(channel, callback),
      });
    });

    const maxConnectionAttempts &#x3D; this.getOptionsProp(
      this.options,
      &#x27;maxConnectionAttempts&#x27;,
      INFINITE_CONNECTION_ATTEMPTS,
    );
    this.server.on(DISCONNECT_EVENT, (err: any) &#x3D;&gt; {
      this.logger.error(DISCONNECTED_RMQ_MESSAGE);
      this.logger.error(err);
    });
    this.server.on(CONNECT_FAILED_EVENT, (error: Record&lt;string, unknown&gt;) &#x3D;&gt; {
      this.logger.error(CONNECTION_FAILED_MESSAGE);
      if (error?.[&#x27;err&#x27;]) {
        this.logger.error(error[&#x27;err&#x27;]);
      }
      const isReconnecting &#x3D; !!this.channel;
      if (
        maxConnectionAttempts &#x3D;&#x3D;&#x3D; INFINITE_CONNECTION_ATTEMPTS ||
        isReconnecting
      ) {
        return;
      }
      if (++this.connectionAttempts &#x3D;&#x3D;&#x3D; maxConnectionAttempts) {
        this.close();
        callback?.(error?.[&#x27;err&#x27;] ?? new Error(CONNECTION_FAILED_MESSAGE));
      }
    });
  }

  public override send(
    stream$: Observable&lt;any&gt;,
    respond: (data: WritePacket) &#x3D;&gt; unknown | Promise&lt;unknown&gt;,
  ): Subscription {
    let dataBuffer: WritePacket[] | null &#x3D; null;
    const scheduleOnNextTick &#x3D; (data: WritePacket) &#x3D;&gt; {
      if (!dataBuffer) {
        dataBuffer &#x3D; [data];
        process.nextTick(async () &#x3D;&gt; {
          for (const item of dataBuffer!) {
            await respond(item);
          }
          dataBuffer &#x3D; null;
        });
      } else if (!data.isDisposed) {
        dataBuffer &#x3D; dataBuffer.concat(data);
      } else {
        dataBuffer[dataBuffer.length - 1].isDisposed &#x3D; data.isDisposed;
      }
    };
    return stream$
      .pipe(
        catchError((err: any) &#x3D;&gt; {
          scheduleOnNextTick({ err: this.errorSerializer.serialize(err) });
          return EMPTY;
        }),
        finalize(() &#x3D;&gt; scheduleOnNextTick({ isDisposed: true })),
      )
      .subscribe((response: any) &#x3D;&gt; scheduleOnNextTick({ response }));
  }

  public createClient() {
    const socketOptions &#x3D; this.getOptionsProp(this.options, &#x27;socketOptions&#x27;);
    return connect(this.options.urls, socketOptions);
  }

  public async setupChannel(channel: ChannelWrapper, callback?: () &#x3D;&gt; any) {
    if (!this.options.noAssert) {
      for (const exchange of coerceArray(this.options.exchange)) {
        await channel.assertExchange(exchange.name, exchange.type, exchange.options);
      }
      const { queue } &#x3D; await channel.assertQueue(this.options.queue ?? &#x27;&#x27;, this.options.queueOptions);
      this.queue &#x3D; queue;
    } else {
      this.queue &#x3D; this.options.queue ?? &#x27;&#x27;;
    }
    const r &#x3D; await (
      channel as any
    ).prefetch(this.options.prefetchCount ?? 0, this.options.isGlobalPrefetchCount);
    channel.consume(
      this.queue,
      (msg: Record&lt;string, any&gt;) &#x3D;&gt; this.handleMessage(msg, channel),
      {
        prefetch: this.options.prefetchCount ?? 0,
        noAck: this.options.noAck ?? true,
        consumerTag: this.getOptionsProp(
          this.options,
          &#x27;consumerTag&#x27;,
          undefined,
        ),
      },
    );
    callback?.();
  }

  public async handleMessage(
    message: Record&lt;string, any&gt;,
    channel: any,
  ): Promise&lt;void&gt; {
    this.logger.debug?.(&#x27;Message received&#x27;, &#x27;ServerRMQ&#x27;);
    if (isNil(message)) {
      return;
    }
    const {
      content,
      properties,
      fields,
    } &#x3D; message;
    const rawMessage &#x3D; this.parseMessageContent(content);
    this.logger.verbose?.(&#x27;Message content: %JSON&#x27;, rawMessage, &#x27;ServerRMQ&#x27;);
    this.logger.verbose?.(&#x27;Message properties: %JSON&#x27;, properties, &#x27;ServerRMQ&#x27;);
    this.logger.verbose?.(&#x27;Message fields: %JSON&#x27;, fields, &#x27;ServerRMQ&#x27;);
    const packet &#x3D; await this.deserializer.deserialize(rawMessage, {
      fields,
      properties,
    });
    this.logger.debug?.(&#x27;Extracted packet message content: %JSON&#x27;, packet, &#x27;ServerRMQ&#x27;);
    const pattern &#x3D; (
      isString(packet.pattern) ? packet.pattern : JSON.stringify(packet.pattern)
    );
    const rmqContext &#x3D; new RmqContext([ message, channel, pattern ]);
    if (isUndefined((
      packet as IncomingRequest
    ).id)) {
      this.logger.debug?.(&#x27;Message without correlation id&#x27;, &#x27;ServerRMQ&#x27;);
      return this.handleEvent(pattern, packet, rmqContext);
    }
    const handler &#x3D; this.getHandlerByPattern(pattern);

    if (!handler) {
      if (!(
        this.options.noAck ?? true
      )) {
        this.logger.warn(RQM_NO_MESSAGE_HANDLER&#x60;${ pattern }&#x60;);
        this.channel!.nack(rmqContext.getMessage() as Message, false, false);
      }
      const status &#x3D; &#x27;error&#x27;;
      const noHandlerPacket &#x3D; {
        id: (
          packet as IncomingRequest
        ).id,
        err: NO_MESSAGE_HANDLER,
        status,
      };
      return this.sendMessage(
        noHandlerPacket,
        properties.replyTo,
        properties.correlationId,
      );
    }
    const response$ &#x3D; this.transformToObservable(
      await handler(packet.data, rmqContext),
    );

    const publish &#x3D; &lt;T&gt;(data: T) &#x3D;&gt;
      this.sendMessage(data, properties.replyTo, properties.correlationId);

    this.logger.debug?.(&#x27;Handling event and sending response&#x27;, &#x27;ServerRMQ&#x27;);
    response$ &amp;&amp; this.send(response$, publish);
  }

  public override async handleEvent(
    pattern: string,
    packet: ReadPacket,
    context: RmqContext,
  ): Promise&lt;any&gt; {
    const handler &#x3D; this.getHandlerByPattern(pattern);
    if (!handler &amp;&amp; !(
      this.options.noAck ?? true
    )) {
      this.channel!.nack(context.getMessage() as Message, false, false);
      return this.logger.warn(RQM_NO_EVENT_HANDLER&#x60;${ pattern }&#x60;);
    }
    return super.handleEvent(pattern, packet, context);
  }

  public sendMessage&lt;T &#x3D; any&gt;(
    message: T,
    replyTo: any,
    correlationId: string,
  ): void {
    const outgoingResponse &#x3D; this.serializer.serialize(
      message as unknown as OutgoingResponse,
    );
    const options &#x3D; outgoingResponse.options;
    delete outgoingResponse.options;

    const buffer &#x3D; Buffer.from(JSON.stringify(outgoingResponse));
    this.channel!.sendToQueue(replyTo, buffer, { correlationId, ...options });
  }

  public override addHandler(
    pattern: any,
    callback: MessageHandler,
    isEventHandler?: boolean,
    extras?: Record&lt;any, any&gt;,
  ) {
    this.logger.log(&#x60;Adding message handler for pattern &#x27;${ pattern }&#x27;&#x60;, &#x27;ServerRMQ&#x27;);
    super.addHandler(pattern, callback, isEventHandler, extras);
  }

  protected override initializeDeserializer(options: ServerRmqOptions) {
    this.deserializer &#x3D; options?.deserializer ?? new RabbitMqIncomingRequestDeserializer();
  }

  protected override initializeSerializer(options: ServerRmqOptions) {
    this.serializer &#x3D; options?.serializer ?? new RmqRecordSerializer();
  }

  private parseMessageContent(content: Buffer) {
    try {
      return JSON.parse(content.toString());
    } catch {
      return content.toString();
    }
  }

}
</code></pre>
    </div>
</div>









                   </div><div class="search-results">
    <div class="has-results">
        <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
        <ul class="search-results-list"></ul>
    </div>
    <div class="no-results">
        <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
    </div>
</div>
</div>
               <!-- END CONTENT -->
           </div>
       </div>

          <label class="dark-mode-switch">
               <input type="checkbox">
               <span class="slider">
                    <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
                    <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
                    </svg>
               </span>
          </label>

       <script>
            var COMPODOC_CURRENT_PAGE_DEPTH = 1;
            var COMPODOC_CURRENT_PAGE_CONTEXT = 'class';
            var COMPODOC_CURRENT_PAGE_URL = 'ServerRMQ.html';
            var MAX_SEARCH_RESULTS = 15;
       </script>

       <script>
               $darkModeToggleSwitchers = document.querySelectorAll('.dark-mode-switch input');
               checkToggle(darkModeState);
               if ($darkModeToggleSwitchers.length > 0) {
                    for (var i = 0; i < $darkModeToggleSwitchers.length; i++) {
                         $darkModeToggleSwitchers[i].addEventListener('change', function (event) {
                              darkModeState = !darkModeState;
                              toggleDarkMode(darkModeState);
                         });
                    }
               }
          </script>

       <script src="../js/libs/custom-elements.min.js"></script>
       <script src="../js/libs/lit-html.js"></script>

       <script src="../js/menu-wc.js" defer></script>
       <script nomodule src="../js/menu-wc_es5.js" defer></script>

       <script src="../js/libs/bootstrap-native.js"></script>

       <script src="../js/libs/es6-shim.min.js"></script>
       <script src="../js/libs/EventDispatcher.js"></script>
       <script src="../js/libs/promise.min.js"></script>
       <script src="../js/libs/zepto.min.js"></script>

       <script src="../js/compodoc.js"></script>

       <script src="../js/tabs.js"></script>
       <script src="../js/menu.js"></script>
       <script src="../js/libs/clipboard.min.js"></script>
       <script src="../js/libs/prism.js"></script>
       <script src="../js/sourceCode.js"></script>
          <script src="../js/search/search.js"></script>
          <script src="../js/search/lunr.min.js"></script>
          <script src="../js/search/search-lunr.js"></script>
          <script src="../js/search/search_index.js"></script>
       <script src="../js/lazy-load-graphs.js"></script>


    </body>
</html>