JuliaComputing / AMQPClient.jl

A Julia AMQP (Advanced Message Queuing Protocol) / RabbitMQ Client.
Other
39 stars 21 forks source link

auth_params as Dict{String,String} raises a MethodError #62

Open scls19fr opened 1 year ago

scls19fr commented 1 year ago

Hello,

using AMQPClient
login, password = "guest", "guest"
port = AMQPClient.AMQP_DEFAULT_PORT
auth_params = Dict("MECHANISM"=>"AMQPLAIN", "LOGIN"=>login, "PASSWORD"=>password)
conn = connection(;virtualhost="/", host="localhost", port=port, auth_params=auth_params)

raises the following error

┌ Warning: ChannelReceiver(0) task exiting. Unhandled exception: MethodError(AMQPClient.send_connection_start_ok, (AMQPClient.MessageChannel(0x0000, AMQPClient.Connection("/", "localhost", 5672, Sockets.TCPSocket(Base.Libc.WindowsRawSocket(0x0000000000000364) active, 0 bytes waiting), Dict{Symbol, Any}(:VersionMinor => 0x09, :VersionMajor => 0x00, :Locales => "en_US", :ServerProperties => Dict{String, Any}("capabilities" => Dict{String, Any}("consumer_cancel_notify" => 0x01, "exchange_exchange_bindings" => 0x01, "publisher_confirms" => 0x01, "basic.nack" => 0x01, "authentication_failure_close" => 0x01, "direct_reply_to" => 0x01, "connection.blocked" => 0x01, "consumer_priorities" => 0x01, "per_consumer_qos" => 0x01), "cluster_name" => "rabbit@8d53e8f4037b", "platform" => "Erlang/OTP 25.1.1", "copyright" => "Copyright (c) 2007-2022 VMware, Inc. or its affiliates.", "product" => "RabbitMQ", "information" => "Licensed under the MPL 2.0. Website: https://rabbitmq.com", "version" => "3.11.1"), :Mechanisms => "AMQPLAIN PLAIN"), Dict{String, Any}("consumer_cancel_notify" => 0x01, "exchange_exchange_bindings" => 0x01, "publisher_confirms" => 0x01, "basic.nack" => 0x01, "authentication_failure_close" => 0x01, "direct_reply_to" => 0x01, "connection.blocked" => 0x01, "consumer_priorities" => 0x01, "per_consumer_qos" => 0x01), 0, 0, 0, true, 60, true, 0x01, Channel{AMQPClient.TAMQPGenericFrame}(1024), Channel{UInt8}(1), Dict{UInt16, AMQPClient.AbstractChannel}(0x0000 => AMQPClient.MessageChannel(#= circular reference @-3 =#)), Task (runnable) @0x0000000072431d20, Task (runnable) @0x0000000072431f10, nothing, 1.666021798883e9, 0.0), 0x01, true, Channel{AMQPClient.TAMQPGenericFrame}(1024), Task (runnable) @0x0000000072432100, Dict{Tuple, Tuple{Function, Any}}((1, 10, 30) => (AMQPClient.on_connection_tune, Dict{Symbol, Any}(:framemax => 0, :heartbeat => 0, :channelmax => 256))), Message[], Channel{Union{Nothing, Message}}(1), Dict{String, AMQPClient.MessageConsumer}(), Dict{String, Channel{Message}}(), ReentrantLock(nothing, 0x00000000, 0x00, Base.GenericCondition{Base.Threads.SpinLock}(Base.InvasiveLinkedList{Task}(nothing, nothing), Base.Threads.SpinLock(0)), (8, 0, 0)), nothing), Dict("MECHANISM" => "AMQPLAIN", "PASSWORD" => "guest", "LOGIN" => "guest")), 0x0000000000007ece)
│   exception =
│    MethodError: no method matching send_connection_start_ok(::AMQPClient.MessageChannel, ::Dict{String, String})
│    Closest candidates are:
│      send_connection_start_ok(::AMQPClient.MessageChannel, ::Dict{String, Any}) at C:\Users\scell\.julia\packages\AMQPClient\4SE4N\src\protocol.jl:1147
│    Stacktrace:
│     [1] on_connection_start(chan::AMQPClient.MessageChannel, m::AMQPClient.TAMQPMethodFrame, ctx::Dict{Symbol, Any})
│       @ AMQPClient C:\Users\scell\.julia\packages\AMQPClient\4SE4N\src\protocol.jl:1143
│     [2] channel_receiver(c::AMQPClient.MessageChannel)
│       @ AMQPClient C:\Users\scell\.julia\packages\AMQPClient\4SE4N\src\protocol.jl:478
│     [3] connection_processor(c::AMQPClient.MessageChannel, name::String, fn::typeof(AMQPClient.channel_receiver))
│       @ AMQPClient C:\Users\scell\.julia\packages\AMQPClient\4SE4N\src\protocol.jl:358
│     [4] (::AMQPClient.var"#39#42"{AMQPClient.MessageChannel})()
│       @ AMQPClient .\task.jl:484
└ @ AMQPClient C:\Users\scell\.julia\packages\AMQPClient\4SE4N\src\protocol.jl:379
ERROR: AMQPClient.AMQPClientException("Connection handshake failed")
Stacktrace:
 [1] connection(; virtualhost::String, host::String, port::Int64, framemax::Int64, heartbeat::Bool, keepalive::Int64, send_queue_size::Int64, auth_params::Dict{String, String}, channelmax::Int64, connect_timeout::Int64, amqps::Nothing)
   @ AMQPClient C:\Users\scell\.julia\packages\AMQPClient\4SE4N\src\protocol.jl:677
 [2] top-level scope
   @ REPL[5]:1

but it doesn't raises error with

auth_params = Dict{String,Any}("MECHANISM"=>"AMQPLAIN", "LOGIN"=>login, "PASSWORD"=>password)