Skip to content

Releases: atidev/ATI.Services.RabbitMQ

v12.1.2

07 Nov 11:37
0020680
Compare
Choose a tag to compare

What's Changed

New debug properties added to EventbusOptions.cs:

  • EnableConsoleLogger enables console logging in EasyNetQ,
  • LogInnerExceptionsInRetryPolicy enables errors logging in retry policy.

Full Changelog: v12.1.1...v12.1.2

v12.1.1

02 Aug 12:50
468141d
Compare
Choose a tag to compare

What's Changed

  • Add nullable annotation, file scoped and access modifier was fixed by @AlexFate in #27

New Contributors

Full Changelog: v12.1.0...v12.1.1

v12.1.0

08 Jul 09:58
97843bc
Compare
Choose a tag to compare

What's Changed

  • Configurable queue/сonsumer + ack strategies for handler by @muphblu in #26

Full Changelog: v12.0.0...v12.1.0

More details...

DotNet8

Dotnet8 + CI

Configurable queue and consumer.

Create subscription with queueConfiguration and consumerConfiguration.

Example

var binding = rmqTopology.CreateBinding(
    "exchange_name",
    "routing_key", isExclusive: false, isDurable: true, isAutoDelete: false,
    queueConfiguration: c =>
    {
        c.AsExclusive(false); // will be overriden by param isExclusive
        c.AsDurable(false); // will be overriden by param isDurable
        c.AsAutoDelete(false); // will be overriden by param isAutoDelete
        
        c.WithArgument("x-normal-size", 1000);
        c.WithArgument("message-ttl", 60000);   //sets message-ttl for this queue
    },
    consumerConfiguration: c => c.WithPrefetchCount(1)); // sets prefetch=1 for this consumer
await eventbusManager.SubscribeAsync(contactOverLimitBinding, Handler);

Handler with Ack strategies

Added message handler overload that allows to use different Ack strategies.

Example

private async Task<AckStrategy> Handler(byte[] body, MessageProperties prop, MessageReceivedInfo info)
{
    if (body == ...)
    {
        //some work
        return AckStrategies.Ack;
    }

    return AckStrategies.NackWithRequeue;
}

v12.0.0

06 May 16:09
c910de4
Compare
Choose a tag to compare

What's Changed

Quorum queue by @muphblu and @Draktolli in #25

  • all queues now are quorum type by default (previously classic)
  • exclusive, auto-delete or non-durable queue will throw exception during creation
  • if queue's name not changed then exception will be thrown(due to queue type changed)

How to use:

  1. Update libs
  2. Change names for queues where loosing messages is critical
  3. For exclusive, auto-delete or non-durable queues change value to the opposite or specify QueueType: classic.
  4. release/deploy. Expect exceptions if you didn't changed names at step 2(they).
  5. Drop old queues after release. Exceptions should be gone by now.

Full Changelog: v11.0.0...v12.0.0

v11.0.0

28 Mar 11:54
2fa7a3a
Compare
Choose a tag to compare
  1. Supports atisu.services.common v15.0.0 (MetricsFactory is used from DI) - https://github.com/atidev/ATI.Services.Common/releases/tag/v15.0.0

v10.0.2 Fixes and add delayed re-queue mechanism for handling failed messages.

19 Mar 22:09
030fb63
Compare
Choose a tag to compare

Fix for rmq resubscribption during connection failures. Avoid subscription duplication.

Delayed re-queue mechanism

Add delayed re-queue mechanism for handling failed messages. After "n" failed attempts to process a message, it will be stored in a poison queue for manual processing.

eventbus-message-requeue drawio(1)

v10.0.1

06 Mar 12:48
08565e5
Compare
Choose a tag to compare

What's Changed

  • method accepts exchange type for create not only topic by @licoon in #20

New Contributors

Full Changelog: v10.0.0...v10.0.1

v10.0.0

01 Mar 10:31
1917388
Compare
Choose a tag to compare

What's Changed

New metrics and DotNet7 by @muphblu in #22.

New metrics

Now we use different metrics for publish and subscribe, added label exchange_routing_key_name for both of them and rmq_app_id for subscribe metrics.
Example:

common_metric_rabbitmq_subscribe{exchange_routing_key_name= "exchange:routeKey", rmq_app_id="AppId from incoming messages or Unknown"}

common_metric_rabbitmq_publish{exchange_routing_key_name="exchange:routeKey"}

Full Changelog: v9.1.0...v10.0.0

v9.1.0

21 Aug 14:40
4d347e5
Compare
Choose a tag to compare

What's Changed

  • Update newtonsofthjson and RabbitMQ by @muphblu in #19
    • upgrades atisu.services.common due to newtonsoft.json vulnerability
    • upgrades EasyNetQ to v7.4.3 due to dependency from vulnerable newtonsoft.json version

Full Changelog: v9.0.2...v9.1.0

v9.0.2

17 Jul 10:55
24dc9d7
Compare
Choose a tag to compare

What's Changed

#17

Bugfixes

  • fixes exception that occurs in case of handling rmq message with unsupported locale(message will be lost), now it will be handled with default locale

Changes

  • Resubscribe logic added, now all queues will be created in case of connection problems with rmq.
Details On `Connected` event the following will happen:
  • create and bind to exchange all subscriptions
  • for exclusive queues also .Consume(...) will be invoked (for ordinal queues we'll reuse consumer created on init)

Full Changelog: v9.0.1...v9.0.2