Giter VIP home page Giter VIP logo

easynetq.management.client's Introduction

Build status

NuGet Status Nuget Status Nuget Status

Activity Activity Activity

EasyNetQ Logo

A Nice .NET API for RabbitMQ

Initial development was sponsored by travel industry experts 15below

Goals:

  1. To make working with RabbitMQ on .NET as easy as possible.

To connect to a RabbitMQ broker...

    var bus = RabbitHutch.CreateBus("host=localhost");

To publish a message...

    await bus.PubSub.PublishAsync(message);

To publish a message with 5s delay...

    await bus.Scheduler.FuturePublishAsync(message, TimeSpan.FromSeconds(5));

To subscribe to a message...

    await bus.PubSub.SubscribeAsync<MyMessage>(
        "my_subscription_id", msg => Console.WriteLine(msg.Text)
    );

Remote procedure call...

    var request = new TestRequestMessage {Text = "Hello from the client! "};
    await bus.Rpc.RequestAsync<TestRequestMessage, TestResponseMessage>(request);

RPC server...

    await bus.Rpc.RespondAsync<TestRequestMessage, TestResponseMessage>(request =>
        new TestResponseMessage{ Text = request.Text + " all done!" }
    );

Getting started

Just open EasyNetQ.sln in VisualStudio or Rider and build. All the required dependencies for the solution file to build the software are included.

Contributors

Thanks to all the people who already contributed!

easynetq.management.client's People

Contributors

bytenik avatar chinaboard avatar conniey avatar dependabot[bot] avatar emilianomusso avatar ericatwork avatar fhalim avatar fydon avatar inikulshin avatar jeanrbastos avatar jeffdoolittle avatar jhuntsman avatar jonnii avatar letalumil avatar luigiberrettini avatar micdenny avatar mikehadlow avatar mleenhardt avatar nikgovorov avatar philiphoy avatar pliner avatar randomcodenz avatar redgoattea avatar robhruska avatar ryanchappell avatar samcook avatar stefansedich avatar stevenbonepgh avatar xpicio avatar zidad avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

easynetq.management.client's Issues

Is there a way to ignore certificate validation when connecting to management service?

The platform is .net core 2.1. I meet a failure connecting to rabbitMq management service. It says "cann't establish ssl connection". After searching some posts, I knows it has certificate validation issue. One solution is to specify the ServerCertificateCustomValidationCallback parameter when creating HttpClientHandler as follow:

var httpClient = new HttpClient(new HttpClientHandler
{
Credentials = new NetworkCredential(username, password),
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
})

But now ManagementClient doesn't provide any input parameter or property to handle this. Any ideas?
Thanks a lot.

Create user using password hash.

Currently it is possible to create new user using username and password pair.
According RabbitMQ Management HTTP API documentation there is also possibility to create new user using hashed password:

An individual user. To PUT a user, you will need a body looking something like this:
{"password":"secret","tags":"administrator"}
or:
{"password_hash":"2lmoth8l4H0DViLaK9Fxi6l9ds8=", "tags":"administrator"}

CreateRequestForPath fails running on Mono 4.6.0.245

After switching from Mono 3.2.8 to 4.6.0.245 our application (running on Debian) always failed by throwing an exception with the message "Could not resolve path field". Some research showed, that the code
var pathField = typeof(Uri).GetField ("path", BindingFlags.Instance | BindingFlags.NonPublic);
always results in the value null for variable pathField.
It seems there is no private field path in the class Uri anymore in never versions of the Mono framework.

Fix the build for .NET Standard release

@zidad said in #64

I have to fix the build, but didn't have enough time for it yet, sorry...

so we just lack the build to finish this porting, if anyone can help is appreciated, otherwise we wait for @zidad

while doing this, remember to get the latest changes on develop branch, as you see there's some commit (the grayed ones) that should be included in the master v1 release:

image

Can't create shovels since 0.48.21.0

After this commit I can't create shovels anymore.

Reverting the change (using parameter instead of parameter.Value) works for me.

I use new ParameterShovelValue class (in CLR code, but I'm sure it is not the problem):

Parameter ^ parameter = gcnew Parameter();
parameter->Component = gcnew String("shovel");
parameter->Vhost = gcnew String("/");
parameter->Name = gcnew String(name.c_str());
ParameterShovelValue ^ Value = gcnew ParameterShovelValue();
// ... init src/dest
parameter->Value = Value;

managementClient->CreateParameter(parameter);

Package signing

Hi,

On using assembly from nuget-repository I have exception like that:

An unhandled exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll
Could not load file or assembly 'EasyNetQ.Management.Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)

We sign our assemblies, so dependent assemblies also should be signed and have strong name.

Can you introduce assembly signing?

Support slashes in Exchange/Queue names

Hello there,

RabbitMq does allow slashes ('/') in Exchange and Queue names. When using the management client I successfully retrieve such an Exchange when asking for all Exchanges, but deleting an Exchange results in a 404/Not found exception. It would be nice if that could be fixed.

Regards and keep up the good work!

PS: Looking at the code I guess it is just an addition to the SanitiseName method in [https://github.com/EasyNetQ/EasyNetQ.Management.Client/blob/master/Source/EasyNetQ.Management.Client/ManagementClient.cs].

CreateUser defaults to User with tag Administrator

If you create a new User without specifying any tags it creates the user with the tag 'administrator'. In the UserInfo class the Tags property will return 'administrator' if no tags are specified.

    public string Tags
    {
        get
        {
            return tagList.Any()
                ? string.Join(",", tagList)
                : allowedTags.First();

        }
    }
    private readonly ISet<string> allowedTags = new HashSet<string>
    {
        "administrator", "monitoring", "management", "policymaker"
    };

I am trying to create a user that has no tags (perfectly valid) but am unable to do it using the ManagementClient. Is there any reason for this? It seems it should return string.Empty if no Tags are provided.

The rabbitmq management API supports creating a user without tags. I tested this by PUTting
{"password":"secret","tags":""} to /api/users/name and it successfully created a user without any tags.

ChangeUserPasswordAsync throws ArgumentException when called

When you try to update the password for an existing user that doesn't have any tags, an ArgumentException is thrown because it tries to add an empty tag.

Exception:

System.ArgumentException: tag is null or empty
   at EasyNetQ.Management.Client.Model.UserInfo.AddTag(String tag)
   at EasyNetQ.Management.Client.ManagementClient.ChangeUserPasswordAsync(String userName, String newPassword, CancellationToken cancellationToken)

The reason is that the following code doesn't remove empty entries:

.NET Standard release?

From the looks of the closed issues and source code it appears that Management.Client has been ported, but still not released. Has it been released somewhere else? Or is there still work to be done before it can be considered finished?

Serialization.PropertyConverter issue

Hi,
I am using EasyNetQ.Management.Client in my app.
Unfortunately I could not use publish method to send messages to server with more advanced properties, because WriteJson method in EasyNetQ.Management.Client.Serialization.PropertyConverter class is unimplemented.
I have implemented it and sending code to you. I hope it will be soon added to repository.

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteStartObject();
var prop = value as EasyNetQ.Management.Client.Model.Properties;
foreach (var currObj in prop)
{

            switch(currObj.Key)
            {

                case "content_type":
                case "content_encoding":
                case  "correlation_id":   
                case "reply_to":          
                case "expiration":       
                case "message_id":       
                case "type":             
                case "user_id":          
                case "app_id":           
                case "cluster_id":       
                        writer.WritePropertyName(currObj.Key);
                        writer.WriteValue(currObj.Value);
                    break;
                case "priority":         
                case "timestamp":  
                case "delivery_mode":                            
                     int val;
                     if (Int32.TryParse(currObj.Value, out val))
                     {
                         writer.WritePropertyName(currObj.Key);
                         writer.WriteValue(val);
                     }
                    break;
            }
        }
        if( prop.Headers.Count > 0 )
        {
            writer.WritePropertyName("headers");
            writer.WriteStartObject();
            foreach (var currObj in prop.Headers)
            {
                writer.WritePropertyName(currObj.Key);  
                writer.WriteValue(currObj.Value); 
            }

            writer.WriteEndObject();
        }
        writer.WriteEndObject();           

    }

GetQueue fails when consumer attached

Hi,

I've found an issue where the GetQueue is throwing an error deserialising the response from the Rabbit API when a consumer is attached. The error is:

Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: {. Path 'consumer_details[0].arguments.x-credit', line 1, position 47.
   at Newtonsoft.Json.JsonTextReader.ReadStringValue(ReadType readType)
   at Newtonsoft.Json.JsonTextReader.ReadAsString()
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateDictionary(IDictionary dictionary, JsonReader reader, JsonDictionaryContract contract, JsonProperty containerProperty, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at EasyNetQ.Management.Client.ManagementClient.DeserializeResponse[T](HttpWebResponse response)
   at EasyNetQ.Management.Client.ManagementClient.Get[T](String path, Object[] queryObjects)
   at EasyNetQ.Management.Client.ManagementClient.GetQueue(String queueName, Vhost vhost, GetLengthsCriteria lengthsCriteria, GetRatesCriteria ratesCriteria)

This is only thrown when I have a consumer attached to the queue. I've narrowed down the issue to the arguments in consumer_details section of the json returned from api/queues/%2f/<queuename> , there is an x-credit argument with an array , meaning the arguments can't be deserialized into a Dictionary<string,String>:

{
    "consumer_details": [
        {
            "arguments": {
                "x-credit": {
                    "credit": 0,
                    "drain": false
                }
            },

I can resolve this by changing Model\Argument.cs from:

public class Arguments : Dictionary<string, string>

to

public class Arguments : Dictionary<string, object>

However, I'm not sure what can be included in the arguments section of the API call - and I cannot find a definitive reference anywhere.

I'm using Rabbit MQ server 3.7.0-rc2

Thanks

Can't read messages

Hello,
I'm new to RabbitMQ, and I have an issue with reading messages. When I'm calling GetMessagesFromQueueAsync method I'm getting 400 Bad request error. I've no clue what can be wrong, here is my code:

var client = new ManagementClient("http://localhost", "guest", "guest");
var vhost = client.GetVhostAsync("/");
vhost.Wait();

var queue = client.GetQueueAsync("testUser", vhost.Result);
queue.Wait();

var criteria = new GetMessagesCriteria(1, true);

var message = client.GetMessagesFromQueueAsync(queue.Result, criteria);
message.Wait();
var res = message.Result;

Console.ReadLine();

I have an vHost "/", exchange "Incoming" and a queue "testUser" binded to exchange. The queue is durable, auto-delete and the exchage of type fanout, durable .
Thanks

GetNodes() throws an exception when the cluster has a partition

Error converting value "rabbit@MY_SERVER_NAME" to type 'EasyNetQ.Management.Client.Model.Partition'. Path '[0].partitions[0]', line 1, position 953.

To create a partition in your cluster disconnect the network cable of a node from the cluster for more than 1 min and then reconnect it.

Issue originally incorrectly submitted on EasyNetQ

Add support for healthcheck-requests

Hi! Management HTTP API has healthcheck methods (like '/api/healthchecks/node'), but EasyNetQ.Management.Client has not. It will be great if you add them.

Bug: Url with path prefix throws an regex error

Hi,

the management api is usually available at scheme://host:port/api/...
But it is also desirable (and possible) to set a different path (e.g. for reverse proxy scenarios).
This is supported by RabbitMQs "path prefix" option.

Unfortunately EasyNetQ does not support it, see ManagementClient:

var uri = new Uri($"{HostUrl}:{PortNumber}/api/{path}{query ?? string.Empty}");

Using this code snippet also throws an ArgumentException of "hostUrl is illegal":

var initial = new ManagementClient("http://localhost/management/", "guest", "guest");

The solution for this may be straight forward: accept a valid url (including scheme, host, port, path and query parameters) in class ManagementClient and inject the REST api + new query parameters required for the rest call.

This way, the api can be fine tuned with all available options and it may also be possible to tweak the api calls in the future to circumvent a breaking api change in rabbitmq.

Best
stpag-cv

Trying to create a shovel results in a HTTP 400 BadRequest

Trying to create a shovel results in a http 400 error. Reverting 12f949f solves the issue. This happens with version 1.3.0.

	var client = new ManagementClient(...);
	
	var shovel = new ParameterShovelValue
	{
...
	};
		
	var parameter = new Parameter 
	{
		Component = "shovel",
		Name = "test",
		Value = shovel,
		Vhost = "/"
	};
	
	client.CreateParameter(parameter);

Related: #35

Content-Type header not being added to PUT requests with no request body

In the versions previous to 1.0.0, there were 2 versions of Put: Put(string path) and Put<T>(string path, T item). Both of these added the Content-Type: application/json header, but in 1.0.0 and up, the PutAsync function only adds this header when an item is provided, as part of InsertRequestBody(request, item);.

This means that in the case of e.g. CreateVirtualHostAsync the header isn't set as there is no request body. However the RMQ API requires the content type be set for this request anyway, which means that this function call results in a 415 Unsupported Media Type response.

JSON integer is too large or small for an Int32

Hi
I use Assembly EasyNetQ.Management.Client, Version=0.47.12.38, Culture=neutral, PublicKeyToken=null

when try to get Queue.Messages , get the error : Newtonsoft.Json.JsonReaderException: 'JSON integer 2277968072 is too large or small for an Int32. Path '[2].memory', line 1, position 2430.'

i see that the Messages property declared as int

namespace EasyNetQ.Management.Client.Model
{
public class Queue
{
public Queue();

public string Node { get; set; }
public Arguments Arguments { get; set; }
public bool AutoDelete { get; set; }
public bool Durable { get; set; }
public string Vhost { get; set; }
public string Name { get; set; }
public List<object> ConsumerDetails { get; set; }
public BackingQueueStatus BackingQueueStatus { get; set; }
public int ActiveConsumers { get; set; }
public int Consumers { get; set; }
public int Messages { get; set; }
public int MessagesUnacknowledged { get; set; }
public int MessagesReady { get; set; }
public string ExclusiveConsumerTag { get; set; }
public string Policy { get; set; }
public string IdleSince { get; set; }
public int Memory { get; set; }
public IEnumerable<string> SlaveNodes { get; set; }
public IEnumerable<string> SynchronisedSlaveNodes { get; set; }

}
}

command that I use is

return managementClient.GetQueues()
.Where(q => q.Vhost == configuration.VirtualHost)
.Select(s => new QueueStats
{
Name = s.Name,
Messages = s.Messages
});

do you have fix for messages, suppose it must be long to not fall ?

How to use IsAlive?

The IsAlive call in the sample code fails because aliveness-test can only be invoked by users with either the administrator or management tags. Unfortunately the Tags property on UserInfo is read-only, and it only seems to be used by ChangeUserPassword -- which preserves them.

Creating a user through the client tool wipes out the tags on the existing user -- confirmed by visiting the management console.

This informs you about the management tag:

curl -i http://myUser:myPassword@localhost:15672/api/aliveness-test/my-virtual-host

Cannot set publish "headers" property

The publish command expects headers to be an object rather than a string. The following request is valid in Postman:

POST http://localhost:31101/api/exchanges/%2F/myroute/publish
Body:

{
	"properties":{
		"headers": {"context": "{}"},
		"ProtocolClassName": "basic"
	},
	"routing_key":"myroutingkey",
	"payload": "{}",
	"payload_encoding":"string"
}

Setting the headers property to any string causes a 500 error from RabbitMQ. PublishInfo.Properties is a Dictionary<string, string>, so it is impossible to pass headers to a publish request.

exchange names need escaping

Seems DeleteBindingAsync() does not handle the case where source/destination has a colon in the name. I get a 404 when trying to delete.

Examining the request I see

http://localhost:15672/api/bindings/%2F/e/My:Exchange1/e/My:Exchange1/~

but it should be

http://localhost:15672/api/bindings/%2F/e/My%3AExchange1/e/My%3AExchange1/~

Looks like an addition to SanitiseName() and include it DeleteBindingAsync() for source/destination names.

Can I give you a pull request for this?

NuGet API key has expired

Build error when trying to create a new release is due to the non renewed NuGet API key:
The specified API key is invalid, has expired, or does not have permission to access the specified package.

See PR #122 for the discussion around this.

GetQueueAsync : cannot deserialize JSON array into type EasyNetQ.Management.Client.Model.ChannelDetaile (intermittent)

There are intermittent failures of the method GetQueueAsync with the mentioned exception.

I found out that under the hood the method executes request to /api/queues
and the C# model which is mapped to response expects value of {"consumer_details":{"channel_details" to be object. However, sometimes there is an array instead which yields deserialization error (see attached image with WireShark capture on the right). Not sure which side should actually handle this : EasyNetQ or RMQ Management API.

channel_details_issue

Allow custom exchange types (for delayed-message-exchange plugin)

By design EasyNetQ throws exception, when trying to set a custom exchange type:
Unknown exchange type 'x-delayed-message', expected one of direct, topic, fanout, headers
The problem is with this first party RabbitMQ plugin that needs a custom exchange type - https://github.com/rabbitmq/rabbitmq-delayed-message-exchange

There should probably be a way to add custom exchange types to the predefined list in ExchangeInfo.cs class.

As a workaround, I'm overriding the Type with reflection:
exchangeInfo.GetType().GetProperty(nameof(exchangeInfo.Type)).SetValue(exchangeInfo, "x-delayed-message");

Creating a VHOST doesn't check for the correct status codes (201=Created)

Status 201-Created should not throw an exception:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> EasyNetQ.Management.Client.UnexpectedHttpStatusCodeException: Unexpected Status Code: 201 Created
at EasyNetQ.Management.Client.ManagementClient.Put(String path)
at EasyNetQ.Management.Client.ManagementClient.CreateVirtualHost(String virtualHostName)
at AerData.Bus.Host.Tasks.RabbitMqRecreateVHost.Run(RabbitMqConnectionSettings options, CancellationToken token)

Update Nuget package

Hi,

With current management client (v1.0.0) GetMessagesFromQueueAsync doesn't work and returns BadRequest. I see there has been a fix: 50171d7 , but Nuget package was not updated since then. Could you please create new nuget package with the fix included?

Ack mode support missing

RabbitMQ Server 3.7.0
EasyNetQ.Management.Client 0.51.3.116

var messages = this.client.GetMessagesFromQueue(myQueue, new GetMessagesCriteria(1, true));

This code fails with a "Bad Request"
When the query is run from Postman I get the reason code key_missing: ackmode
So I modify my query body from
{"count":1,"requeue":true,"encoding":"auto"}
(which is what EasyNetQ is sending)
to
{"count":1,"requeue":true,"encoding":"auto","ackmode":"ack_requeue_true"}
and then it works.

Auth error for non-admin user

User has a full access for vHost, but after calling client.GetVhostAsync("Test") I'm getting 401 Unauthorized error. It working fine if user has 'administrator' tag, but throws an error with other tags.

Publish EasyNetQ to www.nuget.org

The latest version of EasyNetQ.Management.Client (https://www.nuget.org/packages/EasyNetQ.Management.Client/) is version 0.52.0.188. This version looks pretty old even though it was published 3 months ago (for example it doesn't have the netStandard build, and it's missing some fields like Exclusive in Queue).

Please can you publish the latest build?

Even better can you set it up to publish the latest version from GitHub on every successful build? If you give me access I'll give it a go.

Enable/disable tracing on given virtual host

In RabbitMQ Management HTTP API there is exposed functionality to enable tracing on virtual host.
This is possible to achieve using Put method on /api/vhosts/name with given body {"tracing":true}. Would be nice to have this functionality in EasyNetQ.Management.Client.

Delete queue / exchange does not seem to work

Hi all,

The 'DeleteQueueAsync' and the 'DeleteExchangeAsync' don't seem to be working anymore since one of the latest RabbitMQ versions.

RabbitMQ versions that don't work: 3.7.3, 3.7.9. Not sure about other versions. (Erlang version 21.2). It all worked fine before (I think on version 3.3.7). After calling DeleteQueueAsync I get the following Exception (I also tested with the non async version):
Unexpected Status Code: 400 BadRequest

Anyone know a fix for this issues? I'll try to look into it myself soon.

Code I have which worked before this version:
Link to github code

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.