@mark1russell7/service 0.5.12 → 0.5.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +93 -1
- package/build/{core-C2wnF4mg.d.ts → core-BPLRDcUJ.d.ts} +45 -2
- package/build/dial-DA8vJfh2.d.ts +16 -0
- package/build/grpc.d.ts +307 -0
- package/build/grpc.js +859 -0
- package/build/grpc.js.map +1 -0
- package/build/http-client.d.ts +248 -0
- package/build/http-client.js +612 -0
- package/build/http-client.js.map +1 -0
- package/build/index.d.ts +3 -147
- package/build/{machine-Czfb6fV4.js → machine-BhTRu3u9.js} +182 -2
- package/build/machine-BhTRu3u9.js.map +1 -0
- package/build/mongodb.d.ts +307 -0
- package/build/mongodb.js +688 -0
- package/build/mongodb.js.map +1 -0
- package/build/pg.d.ts +1 -1
- package/build/pg.js +30 -33
- package/build/pg.js.map +1 -1
- package/build/queue-snRHK3Jm.d.ts +150 -0
- package/build/rabbitmq.d.ts +294 -0
- package/build/rabbitmq.js +748 -0
- package/build/rabbitmq.js.map +1 -0
- package/build/redis.d.ts +3 -9
- package/build/redis.js +6 -38
- package/build/redis.js.map +1 -1
- package/build/websocket.d.ts +275 -0
- package/build/websocket.js +780 -0
- package/build/websocket.js.map +1 -0
- package/package.json +38 -1
- package/build/machine-Czfb6fV4.js.map +0 -1
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { Y as Poll } from "./lifecycle-fgYfxrHK.js";
|
|
2
|
+
import { C as MANIFESTATIONS, D as firstDetector, E as Situation, O as unwatched, S as Detector, T as Meeting, _ as Sent, a as ClientKnobs, b as retryProblems, c as ClientSpec, d as Factory, f as ReadyWait, g as SendOptions, h as STARTING_POLL, i as ClientJoin, l as ClientStep, n as CheckOptions, o as ClientOptions, p as RetryKnobs, r as Client, s as ClientSocket, t as Attempt, u as DialFn, v as readyWait, w as Manifestation, y as retryBackoff } from "./core-BPLRDcUJ.js";
|
|
3
|
+
import { t as Judge } from "./dial-DA8vJfh2.js";
|
|
4
|
+
import { i as JobSettle } from "./queue-snRHK3Jm.js";
|
|
5
|
+
import { Extent, Quantity } from "@mark1russell7/quantity";
|
|
6
|
+
import { Machine } from "@mark1russell7/algebra";
|
|
7
|
+
//#region src/rabbitmq/connection.d.ts
|
|
8
|
+
/** A message is a message of the broker, as amqplib gives it from `get`. The wrapper reads only these fields. */
|
|
9
|
+
interface RabbitMessage {
|
|
10
|
+
readonly content: Buffer;
|
|
11
|
+
readonly fields: {
|
|
12
|
+
readonly deliveryTag: number;
|
|
13
|
+
readonly redelivered: boolean;
|
|
14
|
+
readonly exchange: string;
|
|
15
|
+
readonly routingKey: string;
|
|
16
|
+
/** This count is the number of messages that stay on the queue after this one. */
|
|
17
|
+
readonly messageCount?: number | undefined;
|
|
18
|
+
};
|
|
19
|
+
readonly properties: {
|
|
20
|
+
readonly headers?: Readonly<Record<string, unknown>> | undefined;
|
|
21
|
+
readonly [property: string]: unknown;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** These are the properties of a publish that amqplib takes, for example `persistent`, `messageId` and `headers`. */
|
|
25
|
+
type RabbitPublishOptions = Readonly<Record<string, unknown>>;
|
|
26
|
+
/** These are the events of a channel that the wrapper listens to. */
|
|
27
|
+
type RabbitChannelEvent = "error" | "close";
|
|
28
|
+
/**
|
|
29
|
+
* A channel is the part of a `ConfirmChannel` of amqplib 2 that the wrapper uses. A confirm channel
|
|
30
|
+
* gives one result to the callback of each publish. The result is null for a `basic.ack`. It is an
|
|
31
|
+
* error for a `basic.nack` and for the end of the channel.
|
|
32
|
+
*/
|
|
33
|
+
interface RabbitChannel {
|
|
34
|
+
/** This method writes one message. It throws when the channel is closed or closing. */
|
|
35
|
+
publish(exchange: string, routingKey: string, content: Buffer, options: RabbitPublishOptions, callback: (error: Error | null) => void): boolean;
|
|
36
|
+
/** This method takes one message (`basic.get`), or gives false when the queue is empty. It has no timer of its own. */
|
|
37
|
+
get(queue: string, options?: {
|
|
38
|
+
readonly noAck?: boolean | undefined;
|
|
39
|
+
}): Promise<RabbitMessage | false>;
|
|
40
|
+
/** This method declares an exchange in passive mode: an RPC that changes nothing. The round-trip check uses it. */
|
|
41
|
+
checkExchange(exchange: string): Promise<unknown>;
|
|
42
|
+
/** This method acknowledges one message. It is one frame, with no reply. */
|
|
43
|
+
ack(message: RabbitMessage): void;
|
|
44
|
+
/** This method gives one message back to the broker, to the queue or to its dead-letter route. It is one frame, with no reply. */
|
|
45
|
+
nack(message: RabbitMessage, allUpTo?: boolean, requeue?: boolean): void;
|
|
46
|
+
close(): Promise<void>;
|
|
47
|
+
on(event: RabbitChannelEvent, listener: (error?: Error) => void): unknown;
|
|
48
|
+
off(event: RabbitChannelEvent, listener: (error?: Error) => void): unknown;
|
|
49
|
+
}
|
|
50
|
+
/** These are the events of a connection that the wrapper listens to. The event `blocked` gives the reason of the broker. */
|
|
51
|
+
type RabbitConnectionEvent = "error" | "close" | "blocked" | "unblocked";
|
|
52
|
+
/**
|
|
53
|
+
* A connection is the part of a `ChannelModel` of amqplib 2 that the wrapper uses. A `ChannelModel`
|
|
54
|
+
* has each part. A fake for tests has them too. Thus the package depends on no type of amqplib.
|
|
55
|
+
*/
|
|
56
|
+
interface RabbitConnection {
|
|
57
|
+
/** This method opens a channel with confirms (`confirm.select`). */
|
|
58
|
+
createConfirmChannel(): Promise<RabbitChannel>;
|
|
59
|
+
/** This method sends `connection.close`, and waits for `connection.close-ok`. Behind a black hole, it waits with no bound. */
|
|
60
|
+
close(): Promise<void>;
|
|
61
|
+
on(event: RabbitConnectionEvent, listener: (detail?: unknown) => void): unknown;
|
|
62
|
+
off(event: RabbitConnectionEvent, listener: (detail?: unknown) => void): unknown;
|
|
63
|
+
/** This field holds the socket. The join reads its addresses, and the bounded close destroys it. */
|
|
64
|
+
readonly connection: {
|
|
65
|
+
readonly stream?: ClientSocket | undefined;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* These are the socket options that the wrapper gives amqplib. Each one comes from the declaration.
|
|
70
|
+
* At its defaults, amqplib sets no connect timeout, no keepalive and no TCP_NODELAY.
|
|
71
|
+
*/
|
|
72
|
+
interface RabbitSocketOptions {
|
|
73
|
+
/** This time bounds the TCP connect and the handshake. The timer stops when the connection opens. A time of 0 is no bound. */
|
|
74
|
+
readonly timeout: number;
|
|
75
|
+
/** The library turns Nagle off only when the caller asks. A confirm and a reply then do not wait for a delayed ACK. */
|
|
76
|
+
readonly noDelay: true;
|
|
77
|
+
readonly keepAlive: boolean;
|
|
78
|
+
/** This time is the idle time of TCP keepalive, in milliseconds. Node truncates it to whole seconds. */
|
|
79
|
+
readonly keepAliveDelay?: number | undefined;
|
|
80
|
+
/** The broker shows `connection_name` in its management view and its log, thus the prober can join on it too. */
|
|
81
|
+
readonly clientProperties: {
|
|
82
|
+
readonly connection_name: string;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** These are the arguments of `connect(url, socketOptions)`. The URL gives the host, the vhost, the user and the heartbeat. */
|
|
86
|
+
interface RabbitConnectOptions {
|
|
87
|
+
readonly url: string;
|
|
88
|
+
readonly socketOptions: RabbitSocketOptions;
|
|
89
|
+
}
|
|
90
|
+
/** A connection factory makes one connection of amqplib from its options. A failure to open rejects. */
|
|
91
|
+
type RabbitFactory = Factory<RabbitConnectOptions, RabbitConnection>;
|
|
92
|
+
/**
|
|
93
|
+
* This factory opens a connection of amqplib. It loads amqplib only when a client connects, thus a
|
|
94
|
+
* service that does not use RabbitMQ does not need it. The specifier is a value, thus the package
|
|
95
|
+
* needs no types of amqplib. The built-in recovery of amqplib stays off, because the wrapper connects again by itself.
|
|
96
|
+
*/
|
|
97
|
+
export declare const nodeAmqp: RabbitFactory;
|
|
98
|
+
//#endregion
|
|
99
|
+
//#region src/rabbitmq/client.d.ts
|
|
100
|
+
/**
|
|
101
|
+
* These are the knobs of the client, each a time, by the names of the ordering law where the law
|
|
102
|
+
* has them. The runtime has no defaults, thus each knob is necessary. A bound that nobody gives is
|
|
103
|
+
* "infinite", not zero. The constant `RABBIT_STARTING_KNOBS` gives a declaration from the cells of R3. The knobs
|
|
104
|
+
* that each client has come from the core.
|
|
105
|
+
*/
|
|
106
|
+
interface RabbitKnobs extends ClientKnobs, RetryKnobs {
|
|
107
|
+
/**
|
|
108
|
+
* This time bounds the TCP connect and the handshake (`socketOptions.timeout`). The client also
|
|
109
|
+
* bounds the open of its channel with it. The timer of amqplib stops when the connection opens.
|
|
110
|
+
*/
|
|
111
|
+
readonly connect_bound: Quantity;
|
|
112
|
+
/** This time bounds each call: a publish until its confirm, and an RPC until its reply. The wrapper has this timer, because amqplib has none. */
|
|
113
|
+
readonly request_timeout: Quantity;
|
|
114
|
+
/**
|
|
115
|
+
* This time is the heartbeat that the client asks for (`heartbeat` in the URL), in whole seconds.
|
|
116
|
+
* The connection uses the smaller of this value and the value of the broker. The value "infinite" asks for no heartbeat.
|
|
117
|
+
*/
|
|
118
|
+
readonly heartbeat_interval: Extent;
|
|
119
|
+
/** This time is the first delay before a new try to connect. The delay doubles after each try. */
|
|
120
|
+
readonly retry_base: Quantity;
|
|
121
|
+
/** This time is the most that one delay can be, before its jitter. */
|
|
122
|
+
readonly retry_cap: Quantity;
|
|
123
|
+
/** This time is the idle time of TCP keepalive (`keepAliveDelay`), in whole seconds. The value "infinite" turns keepalive off, as amqplib does by default. */
|
|
124
|
+
readonly keepalive_idle: Extent;
|
|
125
|
+
/** The client does not replace its connection at an age, thus this knob must be "infinite". */
|
|
126
|
+
readonly max_connection_age: Extent;
|
|
127
|
+
/** This time bounds the close of the client at the shutdown: `connection.close`, then a destroy of the socket. */
|
|
128
|
+
readonly close_bound: Quantity;
|
|
129
|
+
}
|
|
130
|
+
/** A seed is one more node of the cluster. The client connects to the next node after each failure, in sequence. */
|
|
131
|
+
interface RabbitSeed {
|
|
132
|
+
readonly host: string;
|
|
133
|
+
readonly port: number;
|
|
134
|
+
}
|
|
135
|
+
/** A RabbitMQ client spec is the declaration of one RabbitMQ client: where it connects, and its knobs. */
|
|
136
|
+
interface RabbitClientSpec extends ClientSpec<RabbitKnobs> {
|
|
137
|
+
/** This name is the virtual host. The default of the broker is "/". */
|
|
138
|
+
readonly vhost?: string | undefined;
|
|
139
|
+
/** This name is the user. Without it, amqplib connects as the user "guest". */
|
|
140
|
+
readonly username?: string | undefined;
|
|
141
|
+
/** These nodes are more nodes of the cluster, after `host` and `port`. */
|
|
142
|
+
readonly seeds?: readonly RabbitSeed[] | undefined;
|
|
143
|
+
/**
|
|
144
|
+
* These operations are the calls of the service, by name, with their idempotency. A message does
|
|
145
|
+
* not tell if a consumer removes its duplicates. Thus the client sends again only a call that this table names.
|
|
146
|
+
*/
|
|
147
|
+
readonly operations?: ClientSpec<RabbitKnobs>["operations"];
|
|
148
|
+
}
|
|
149
|
+
/** These options make a client. Without them, it uses amqplib, the real clock, `Math.random`, and a dial with the protocol header. */
|
|
150
|
+
interface RabbitClientOptions extends ClientOptions<RabbitFactory> {
|
|
151
|
+
readonly random?: (() => number) | undefined;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* A join is one generation of the client: one connection and its channel, when the channel is open
|
|
155
|
+
* (D1, D2). The prober joins its kernel records to the view of the broker through it.
|
|
156
|
+
*/
|
|
157
|
+
interface RabbitJoin extends ClientJoin {
|
|
158
|
+
/** This text is the node of the connection, as `host:port`. */
|
|
159
|
+
readonly address: string;
|
|
160
|
+
/** This text is the name of the connection in the broker, `local:port -> remote:port`, or null when the socket gives no addresses. */
|
|
161
|
+
readonly connectionName: string | null;
|
|
162
|
+
}
|
|
163
|
+
/** A publish is one message to an exchange. A string content goes as UTF-8. */
|
|
164
|
+
interface RabbitPublish {
|
|
165
|
+
readonly exchange: string;
|
|
166
|
+
readonly routingKey: string;
|
|
167
|
+
readonly content: Buffer | string;
|
|
168
|
+
/** These properties go to amqplib, for example `persistent`, `messageId` and `headers`. */
|
|
169
|
+
readonly properties?: RabbitPublishOptions | undefined;
|
|
170
|
+
}
|
|
171
|
+
/** A delivery is one message that the client took from a queue. It stays on the channel of its generation until a settle. */
|
|
172
|
+
interface RabbitDelivery {
|
|
173
|
+
readonly message: RabbitMessage;
|
|
174
|
+
/** This number is the generation of the channel that holds the message. */
|
|
175
|
+
readonly generation: number;
|
|
176
|
+
/** This count is the delivery of the message, 1 at the first, from `x-delivery-count` or `redelivered`. */
|
|
177
|
+
readonly delivery: number;
|
|
178
|
+
}
|
|
179
|
+
/** These are the source and the settle of a queue drain on one queue: `queueDrain({ source, settle, ... })`. */
|
|
180
|
+
interface RabbitJobs {
|
|
181
|
+
/** This function takes one job, or gives null when the queue is empty. It is a `JobSource` of the drain. */
|
|
182
|
+
readonly source: (signal: AbortSignal) => Promise<RabbitDelivery | null>;
|
|
183
|
+
readonly settle: JobSettle<RabbitDelivery>;
|
|
184
|
+
}
|
|
185
|
+
/** A RabbitMQ client is a dependency of a service: its declaration, its handle, its checks and its calls. */
|
|
186
|
+
interface RabbitClient extends Client<ClientStep, RabbitJoin> {
|
|
187
|
+
/** This text is the state of the client, as `RABBIT_CLIENT_MACHINE` names it. */
|
|
188
|
+
readonly status: string;
|
|
189
|
+
/**
|
|
190
|
+
* This method publishes one message, and waits for its confirm. An ack is `ok`. The client sends
|
|
191
|
+
* again only an idempotent operation, one time at most, after an outcome that is not certain.
|
|
192
|
+
*/
|
|
193
|
+
publish(operation: string, message: RabbitPublish, options?: SendOptions): Promise<Sent<void>>;
|
|
194
|
+
/** This method takes one message from a queue (`basic.get`), or gives null when the queue is empty. */
|
|
195
|
+
get(operation: string, queue: string, options?: SendOptions): Promise<Sent<RabbitDelivery | null>>;
|
|
196
|
+
/** This method gives the source and the settle of a queue drain. The source takes each job with `get`. */
|
|
197
|
+
jobs(operation: string, queue: string): RabbitJobs;
|
|
198
|
+
}
|
|
199
|
+
/** This function gives the problems of a spec: the knobs that the client cannot use. */
|
|
200
|
+
export declare const specProblems: (name: string, spec: RabbitClientSpec) => string[];
|
|
201
|
+
/**
|
|
202
|
+
* This function gives the arguments of `connect` for one node of a spec. Each timer of amqplib
|
|
203
|
+
* comes from the declaration. The heartbeat goes in the URL, and "infinite" is 0, no heartbeat.
|
|
204
|
+
*/
|
|
205
|
+
export declare const rabbitOptions: (name: string, spec: RabbitClientSpec, index?: number) => RabbitConnectOptions;
|
|
206
|
+
/** The bytes of the protocol header of AMQP 0-9-1. A broker answers it with `connection.start`, before the authentication. */
|
|
207
|
+
export declare const AMQP_HEADER: Uint8Array;
|
|
208
|
+
/**
|
|
209
|
+
* This judge reads the answer to the protocol header. A broker that takes the version sends a method
|
|
210
|
+
* frame on channel 0: `connection.start`, class 10 and method 10. A broker that refuses the version
|
|
211
|
+
* sends its own protocol header, and closes the socket.
|
|
212
|
+
*/
|
|
213
|
+
export declare const startJudge: Judge;
|
|
214
|
+
/** This dial function opens a TCP connection, sends the protocol header, and waits for `connection.start`. It needs no password. */
|
|
215
|
+
export declare const amqpDial: DialFn;
|
|
216
|
+
/**
|
|
217
|
+
* This function gives the outcome of a failure of amqplib. The library names few classes of error.
|
|
218
|
+
* Thus the wrapper reads the fields:
|
|
219
|
+
* - A throw before the write (`IllegalOperationError`: the channel is closed or closing) is certain: the call did not leave the client.
|
|
220
|
+
* - A reply code of the broker, from the close of the channel, is certain. The broker refused the call, or a call before it.
|
|
221
|
+
* - A nack, and an end of the channel before the reply or the confirm, are not certain.
|
|
222
|
+
*/
|
|
223
|
+
export declare const failureOutcome: (error: unknown) => Attempt<never>;
|
|
224
|
+
/** This function gives the count of deliveries of a message, 1 at the first. A quorum queue counts in `x-delivery-count`. */
|
|
225
|
+
export declare const deliveryCount: (message: RabbitMessage) => number;
|
|
226
|
+
/**
|
|
227
|
+
* This function makes a RabbitMQ client, a dependency of a service over amqplib 2.
|
|
228
|
+
* - It has one connection and one confirm channel, as one generation. The end of either one ends
|
|
229
|
+
* the generation. The client then connects again by itself, to the next node, after a backoff.
|
|
230
|
+
* - It sets each timer of amqplib from the declaration. The built-in recovery of amqplib stays off.
|
|
231
|
+
* - Its call is a confirmed publish, or an RPC with a reply. Each call has a timer of the wrapper, because amqplib has none.
|
|
232
|
+
* - It tells the outcome of a call in three values, and it settles each call in flight at the end of its generation (C8, C10).
|
|
233
|
+
* - It records the node and the name of each connection at the open of its channel (D1).
|
|
234
|
+
*
|
|
235
|
+
* These parts come from the core of the clients: the outcomes, the second try, the wait for a ready client and the backoff.
|
|
236
|
+
* The calls in flight, the bounded close and the checks also come from the core. This entry gives what amqplib does in its own way.
|
|
237
|
+
*/
|
|
238
|
+
export declare const rabbitClient: (name: string, spec: RabbitClientSpec, options?: RabbitClientOptions) => RabbitClient;
|
|
239
|
+
//#endregion
|
|
240
|
+
//#region src/rabbitmq/machine.d.ts
|
|
241
|
+
/**
|
|
242
|
+
* The RabbitMQ client of the service as a `mark1russell7.machine/1` document. It is one generation
|
|
243
|
+
* at a time: one connection of amqplib and its confirm channel. The machines `amqplib` and
|
|
244
|
+
* `rabbitmq-connection` of `@mark1russell7/machines` give the connection and its heartbeat. The states:
|
|
245
|
+
* - `ready`: the channel is open, and the client sends each call.
|
|
246
|
+
* - `blocked`: a resource alarm of the broker blocked the connection. Each call is not sent until the unblock.
|
|
247
|
+
* - `failing`: no generation is open. The client tries the next node after its backoff.
|
|
248
|
+
*
|
|
249
|
+
* The end of the channel or of the connection ends the generation. A test records the transitions
|
|
250
|
+
* of the client and replays them against this document.
|
|
251
|
+
*/
|
|
252
|
+
export declare const RABBIT_CLIENT_MACHINE: Machine;
|
|
253
|
+
//#endregion
|
|
254
|
+
//#region src/rabbitmq/meets.d.ts
|
|
255
|
+
/**
|
|
256
|
+
* This function gives the manifestations that a RabbitMQ client can meet, and the detectors of each,
|
|
257
|
+
* from its knobs. The cells of R3 measured them on amqplib 2.2.0 against RabbitMQ 4.3.6:
|
|
258
|
+
* - The heartbeat ends a silent connection 2 to 3 heartbeats after the last data. The cells measured
|
|
259
|
+
* 180.009 s at 60 s, and 45.009 s at 15 s (O17). It finds a silent broker in flight and idle.
|
|
260
|
+
* - A stopped broker resets each client at once, because each socket of RabbitMQ has linger 0.
|
|
261
|
+
* - At `tcp_retries2 = 7`, the kernel gave up at 53.016 s.
|
|
262
|
+
* - A broker with a resource alarm blocks each connection that publishes, and it still sends its heartbeats.
|
|
263
|
+
*/
|
|
264
|
+
export declare const rabbitMeetings: (name: string, knobs: RabbitKnobs) => Meeting[];
|
|
265
|
+
//#endregion
|
|
266
|
+
//#region src/rabbitmq/starting.d.ts
|
|
267
|
+
/**
|
|
268
|
+
* This poll is the poll of the checks that `RABBIT_STARTING_KNOBS` fits. It is `STARTING_POLL` of
|
|
269
|
+
* the core: each 5 s with a jitter of 20 %, and a timeout of 4 s (B6, O12). The poll does not depend on the driver.
|
|
270
|
+
*/
|
|
271
|
+
export declare const RABBIT_STARTING_POLL: Poll;
|
|
272
|
+
/**
|
|
273
|
+
* These knobs are a declaration to start from, from what the cells of R3 measured on amqplib 2.2.0
|
|
274
|
+
* against RabbitMQ 4.3.6. The runtime has no defaults: a service gives these knobs, or its own.
|
|
275
|
+
* Each value holds the borders that the cells measured:
|
|
276
|
+
* - `connect_bound` 5 s: the connect timeout of DP44. The timer stops when the connection opens.
|
|
277
|
+
* Thus it does not change a fault with a call in flight. At its defaults, amqplib has no connect timeout.
|
|
278
|
+
* - `request_timeout` 9.5 s: in the slowest poll of 10 s (O13). After a loss of the leader of a quorum
|
|
279
|
+
* queue, the first confirm came at 6.61 s, 6.68 s and 8.05 s (T11). A later confirm is indeterminate, not lost.
|
|
280
|
+
* - `heartbeat_interval` 15 s: the heartbeat ended a silent connection 45.009 s after the last data,
|
|
281
|
+
* before the kernel gave up at 53.016 s (O17). The frames each 7.5 s keep a flow through a router
|
|
282
|
+
* that forgets it at 30 s (O03). At the 60 s of the broker, the heartbeat came at 180.009 s.
|
|
283
|
+
* - `retry_base` 1 s: the cells connected to the next node 1 s after the end of a connection.
|
|
284
|
+
* - `retry_cap` 8 s: no cell measured it. With its jitter of 1 s, the most delay is 9 s, in the slowest poll of 10 s.
|
|
285
|
+
* - `keepalive_idle` "infinite": amqplib sets no keepalive, and the heartbeat refreshes an idle flow.
|
|
286
|
+
* Linux sends no keepalive probe while data is in flight.
|
|
287
|
+
* - `max_connection_age` "infinite": the client does not replace its connection at an age.
|
|
288
|
+
* - `close_bound` 2 s: behind a black hole, `connection.close` waits for its close-ok with no bound.
|
|
289
|
+
* - `retrans_giveup_time` 924.6 s: the give-up of Linux at `tcp_retries2 = 15`.
|
|
290
|
+
*/
|
|
291
|
+
export declare const RABBIT_STARTING_KNOBS: RabbitKnobs;
|
|
292
|
+
//#endregion
|
|
293
|
+
export { type Attempt, type CheckOptions, type Client, type ClientJoin, type ClientKnobs, type ClientOptions, type ClientSocket, type ClientSpec, type ClientStep, type Detector, type DialFn, type Factory, MANIFESTATIONS, type Manifestation, type Meeting, type RabbitChannel, type RabbitChannelEvent, type RabbitClient, type RabbitClientOptions, type RabbitClientSpec, type RabbitConnectOptions, type RabbitConnection, type RabbitConnectionEvent, type RabbitDelivery, type RabbitFactory, type RabbitJobs, type RabbitJoin, type RabbitKnobs, type RabbitMessage, type RabbitPublish, type RabbitPublishOptions, type RabbitSeed, type RabbitSocketOptions, type ReadyWait, type RetryKnobs, STARTING_POLL, type SendOptions, type Sent, type Situation, firstDetector, readyWait, retryBackoff, retryProblems, unwatched };
|
|
294
|
+
//# sourceMappingURL=rabbitmq.d.ts.map
|