---
# System prepended metadata

title: Untitled

---



## Consumer

### Configuration

This is basic configuration for consumer

| Name | Description | Default Value |
| -------- | -------- | -------- |
|Threads|Determine how many the workers consume the new messages| num cpus|
| IsEnableRetry     |  Enable retry and reproduce    | false     |
| RetryMode | (Linear/Exponential) Determine how the delay time is set | Linear|
| MaxRetries| How many retry times before the message is dropped (0 is not set) | 0 |
|MaxReconnect| How many reconnect times | 10 |
|ReconnectAfter| How long should reconnect after fail | 5s|
|Timeout| How long is the connection timeout when trying to connect to RabbitMQ| 20s |
| Qos | The number of message is prefetched (0 is not set) | 0 |
|Delay| How many time the message is putted back to queue after reproduce| 100 ms|

### Flow

#### Response OK

- UML diagrams
```sequence
Queue->Consumer: Consumer consume the message
Consumer --> Queue: Ack

```

#### Response Retry

- UML diagrams
```sequence
Queue->Consumer: Consumer consume the message
Note right of Consumer: If IsEnableRetry = false
Consumer --> Queue: Ack
Note right of Consumer: Else if message is redeliveried
Consumer --> Queue: Drop
Note right of Consumer: Else
Consumer --> Queue: Requeue immediately and marked as redeliveried

```


#### Response Drop

- UML diagrams
```sequence
Queue->Consumer: Consumer consume the message?
Consumer --> Queue: Drop

```


#### Response Reproduce

- UML diagrams
```sequence
Queue->Consumer: Consume
Note right of Consumer: If If IsEnableRetry = false
Consumer -> Publisher: Reproduce the message
Publisher --> Queue: Put the message to back the queue
Note right of Consumer: Else If the max retries is reached
Consumer --> Queue: Drop
Note right of Consumer: Else
Consumer -> Publisher: Reproduce the message after Ts
Publisher -> Wait queue: Publish message with an expiration of Ts
Note right of Wait queue: Wait until the expiration
Wait queue --> Queue: RabbitMQ move the message back to end of queue

```