স্প্রিং এএমকিউ + র‌্যাবিট এমকিউ ৩.৩.৫ অ্যাক্সেস


94

আমি ব্যতিক্রম নীচে পাচ্ছি

org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - প্রমাণীকরণ প্রক্রিয়া প্লেইন ব্যবহার করে লগইন প্রত্যাখ্যান করা হয়েছিল। বিশদগুলির জন্য ব্রোকার লগফাইলে দেখুন।

কনফিগারেশন: উইন্ডোতে রেবিট এমকিউ 3.3.5

কনফিগারেশন ফাইলটিতে %APPDATA%\RabbitMQ\rabbit.config আমি https://www.rabbitmq.com/access-control.html অনুযায়ী নীচে পরিবর্তন করেছি

[{rabbit, [{loopback_users, []}]}].

আমি একটি ব্যবহারকারী / পিডাব্লুডি তৈরির চেষ্টাও করেছি - পরীক্ষা / পরীক্ষা এটি কাজ করে না বলে মনে হচ্ছে।

এই পোস্ট থেকে পদক্ষেপ চেষ্টা ।

অন্যান্য কনফিগারেশন বিবরণ নীচে রয়েছে:

টমক্যাট বসন্ত অ্যাপ্লিকেশন প্রসঙ্গে:

<!-- Rabbit MQ configuration Start -->
    <!-- Connection Factory -->
    <rabbit:connection-factory id="rabbitConnFactory" virtual-host="/" username="guest" password="guest" port="5672"/>

    <!-- Spring AMQP Template -->
    <rabbit:template id="rabbitTemplate" connection-factory="rabbitConnFactory" routing-key="ecl.down.queue" queue="ecl.down.queue" />

    <!-- Spring AMQP Admin -->
    <rabbit:admin id="admin" connection-factory="rabbitConnFactory"/>

    <rabbit:queue id="ecl.down.queue" name="ecl.down.queue" />

    <rabbit:direct-exchange name="ecl.down.exchange">
        <rabbit:bindings>
            <rabbit:binding key="ecl.down.key" queue="ecl.down.queue"/>
        </rabbit:bindings>
    </rabbit:direct-exchange>

আমার কন্ট্রোলার ক্লাসে

@Autowired
RmqMessageSender rmqMessageSender;

//Inside a method
rmqMessageSender.submitToECLDown(orderInSession.getOrderNo());

আমার বার্তা প্রেরক:

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component("messageSender")
public class RmqMessageSender  {

    @Autowired
    AmqpTemplate                rabbitTemplate;

    public void submitToRMQ(String orderId){
        try{
            rabbitTemplate.convertAndSend("Hello World");
        } catch (Exception e){
            LOGGER.error(e.getMessage());
        }
    }       
}

উপরে ব্যতিক্রম ব্লক ব্যতিক্রম নীচে দেয়


org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - প্রমাণীকরণ প্রক্রিয়া প্লেইন ব্যবহার করে লগইন প্রত্যাখ্যান করা হয়েছিল। বিশদগুলির জন্য ব্রোকার লগফাইলে দেখুন।


ত্রুটি লগ

  =ERROR REPORT==== 7-Nov-2014::18:04:37 ===
closing AMQP connection <0.489.0> (10.1.XX.2XX:52298 -> 10.1.XX.2XX:5672):
    {handshake_error,starting,0,
                     {amqp_error,access_refused,
                                 "PLAIN login refused: user 'guest' can only connect via localhost",
                                 'connection.start_ok'}}

Pls.xML এন্ট্রি নীচে খুঁজে পেতে

        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit</artifactId>
            <version>1.3.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-amqp</artifactId>
            <version>4.0.4.RELEASE</version>
        </dependency>

আপনার কোনও চিন্তা / পরামর্শ থাকলে দয়া করে আমাকে জানান


নিশ্চিত হয়ে নিন যে আপনি সম্পাদনা করেছেন এমন কনফিগারেশন
পাইনেপাইন

zaq178miami, আমি এটি লোড হয়েছে তা নিশ্চিত করার জন্য কয়েকটি পদক্ষেপ নিয়েছি। পরিষেবাটি পুনরায় চালু করুন, মেশিনটি পুনরায় বুট করুন এবং এমনকি RabbitMQ পুনরায় ইনস্টল করুন।
জাভাবোয়

উত্তর:


107

আমি নিশ্চিত যে আর্টেম বিলান এখানে যা ব্যাখ্যা করেছেন তা এই ত্রুটির অন্যতম কারণ হতে পারে:

Caused by: com.rabbitmq.client.AuthenticationFailureException: 
ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. 
For details see the

তবে আমার জন্য সমাধানটি হ'ল আমি রেবিট এমকিউ অ্যাডমিন পৃষ্ঠাতে ( http: // লোকালহোস্ট: 15672 / # / ব্যবহারকারী ) ডিফল্ট ব্যবহারকারীর নাম এবং পাসওয়ার্ড যা অতিথি / অতিথি তারপরে একটি নতুন ব্যবহারকারী এবং সেই নতুন ব্যবহারকারীর জন্য যুক্ত করেছি ভার্চুয়াল হোস্ট থেকে এটি অ্যাক্সেসের অনুমতি সক্ষম করে এবং তারপরে ডিফল্ট অতিথির পরিবর্তে নতুন ব্যবহারকারীর নাম এবং পাসওয়ার্ড ব্যবহার করে এবং ত্রুটিটি সাফ করে দেয়।

এখানে চিত্র বর্ণনা লিখুন


4
এটি আমার পক্ষেও কাজ করছে না। অতিথির সাথে সংযোগ: অতিথি ঠিক আছে। নতুন ব্যবহারকারীর সাথে সংযোগ: newPwd এই ত্রুটি দিচ্ছে। কেন জানি না !!
শশাঙ্ক

4
আমারও একই সমস্যা ছিল। এই পরামর্শ অনুসরণ করে এটি এই সমস্যার সমাধান করে।
খ্রিস্টান ডেল বিয়ানকো

46

@ Cpu-100 উত্তরটি সম্পূর্ণ করতে ,

আপনি যদি ওয়েব ইন্টারফেস সক্ষম / ব্যবহার করতে না চান তবে আপনি নীচের মত কমান্ড লাইন ব্যবহার করে একটি নতুন শংসাপত্র তৈরি করতে পারেন এবং এটি আপনার কোডটিতে রাব্বিটএমকিউতে সংযুক্ত করতে ব্যবহার করতে পারেন।

$ rabbitmqctl add_user YOUR_USERNAME YOUR_PASSWORD
$ rabbitmqctl set_user_tags YOUR_USERNAME administrator
$ rabbitmqctl set_permissions -p / YOUR_USERNAME ".*" ".*" ".*"

4
আপনাকে ধন্যবাদ, আমার কাছে রবিটএমকিউর সাথে শূন্য অভিজ্ঞতা আছে এবং এটি আরও একবার খতিয়ে দেখা উচিত কিনা তা পরীক্ষা করার জন্য এডাব্লুএস এএমআই থেকে একটি সার্ভারের সাথে রিমোট সংযোগ প্রাপ্তির একটি দ্রুত সমাধান ছিল।
জেবিএম

36

ব্যবহারকারী 'অতিথি' কেবল লোকালহোস্টের মাধ্যমে সংযোগ করতে পারে

রাব্বিটএমকিউ ৩.৩.x থেকে এটি সত্য true সুতরাং আপনার একই সংস্করণে ক্লায়েন্ট লাইব্রেরি আপগ্রেড করা উচিত, বা স্রেফ স্প্রিং এএমকিউকে সর্বশেষতম সংস্করণে আপগ্রেড করা উচিত (যদি আপনি নির্ভরতা পরিচালক ব্যবহার করেন)।

বিকল্পটির 127.0.0.1ডিফল্ট মান হিসাবে ক্লায়েন্টের পূর্ববর্তী সংস্করণ ব্যবহার করা হয়েছে ।hostConnectionFactory


হাই আর্টেম, আমি জারের সংস্করণগুলির জন্য pom.xML এন্ট্রি যুক্ত করেছি। আদর্শভাবে আমি অতিথি ব্যবহারকারীর নাম এবং পাসওয়ার্ড ব্যবহার করা থেকে দূরে থাকতে চাই। আপনি কি দয়া করে আমাকে জানাতে পারেন যদি আপনার উপরের সেনেরিয়োতে ​​প্রোড রেডি ইউস কেস / কনসেপ্ট অফ প্রুফের জন্য ব্যবহারযোগ্য কোন পয়েন্টার রয়েছে?
জাভাবোয়

দুঃখিত, উপরের সেনেরিয়োতে ​​"প্রোড রেডি ইউস কেস / কনসেপ্টের প্রুফ" সম্পর্কিত আপনি কী বোঝাতে চেয়েছেন তা পরিষ্কার নয়, কারণ আমি এখানে কোনও ব্যবহারের মামলার প্রশ্ন দেখছি না। রাব্বিটএমকিউ ব্রোকারে কোনও ব্যবহারকারী নির্দ্বিধায় নির্দ্বিধায়।
আর্টেম বিলান

সহজ সমাধানটি এর localhostমতো নির্দিষ্ট করতে হবে :ConnectionFactory("localhost")
ব্রেন্ট ব্র্যাডবার্ন

অ্যাজুর উবুন্টুভিএম-এর জন্য, অ্যাজুরে নির্ধারিত আইপি guest/guestঅ্যাকাউন্ট বিশ্বব্যাপী কাজ করে! :(
দেব আনন্দ সাদাসিভম

14

ভূল

ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.

যদি আপনার অ্যাপ্লিকেশনটি খরগোশ এমকিউ-তে সংযোগ স্থাপনের জন্য ব্যবহার করার চেষ্টা করছে এমন শংসাপত্রগুলি ভুল বা অনুপস্থিত থাকে তবে ঘটতে পারে।

আমার এএসপি.এনইটি অ্যাপ্লিকেশনটির web.configফাইলে সঞ্চিত রাবিট এমকিউ শংসাপত্রগুলির ""প্রকৃত পাসওয়ার্ডের স্ট্রিংয়ের পরিবর্তে পাসওয়ার্ডের একটি মান ছিল যখন আমার এটি হয়েছিল।


4
হ্যাঁ - টাইপগুলির জন্য নজর রাখুন। :-)
সুন্দর অন্নমালাই

6

অতিথিদের দূর থেকে অ্যাক্সেসের অনুমতি দেওয়ার জন্য এটি লিখুন

[{rabbit, [{loopback_users, []}]}].

এখানে

c:\Users\[your user name]\AppData\Roaming\RabbitMQ\rabbitmq.config

তারপরে খরগোশ উইন্ডোজ পরিষেবাটি পুনরায় চালু করুন (উত্স https://www.rabbitmq.com/access-control.html )


3

আমার জন্য সমাধানটি সহজ ছিল: ব্যবহারকারীর নামটি কেস সংবেদনশীল। সঠিক ক্যাপগুলি ব্যবহার করতে ব্যর্থ হওয়াও ত্রুটির দিকে পরিচালিত করবে।


2

নতুন সমাধান:

নোড মডিউলটি :কোনও পাসওয়ার্ডে সঠিকভাবে পরিচালনা করতে পারে না । এমনকি ইউআরএল এনকোড করা আছে, যেমন এটি স্বাভাবিকভাবে কাজ করবে, এটি কাজ করে না।

পাসওয়ার্ডের কোনও URL থেকে টিপিক্যাল স্পেসিফিক অক্ষর ব্যবহার করবেন না!

নীচের একটির মতো: : . ? + %


আসল, ভুল উত্তর:

ত্রুটি বার্তাটি ব্যবহার সম্পর্কে স্পষ্টভাবে অভিযোগ করে PLAIN, এর অর্থ এই নয় যে কৃত্রিমটি ভুল রয়েছে, এর অর্থ আপনার অবশ্যই প্লেইন টেক্সটের পরিবর্তে এনক্রিপ্টড ডেটা ডেলিভারি (টিএলএস) ব্যবহার করতে হবে।

amqp://সংযোগের স্ট্রিং-এ পরিবর্তন করুন amqps://(নোট করুন s) এটি সমাধান করে।


2

শুধু খরগোশকে সংযোগ করতে লগইন পাসওয়ার্ড যুক্ত করুন

 CachingConnectionFactory connectionFactory = 
         new CachingConnectionFactory("rabbit_host");

 connectionFactory.setUsername("login");
 connectionFactory.setPassword("password");

2

যদি আপনি নম্বরটি আপনার পাসওয়ার্ড হিসাবে ব্যবহার করেন তবে আপনার স্ট্রিং ব্যবহার করে আপনার পাসওয়ার্ড পরিবর্তন করার চেষ্টা করা উচিত।

ওয়েবসাইটে ডেল্টাকিন: 000000 ব্যবহার করে লগইন করতে পারি, তবে প্রোগ্রামটি চালানোর সময় এটি ছিল। তারপরে পাসওয়ার্ডটি বদ্বীপ পরিবর্তন করুন। এবং এটি কাজ করে।


0

@ গ্রেপিট যা তৈরি করেছিল আমি ঠিক তাই করেছিলাম।

তবে আমার জাভা কোডে আমাকে কিছু পরিবর্তন করতে হয়েছিল:

প্রযোজক এবং প্রাপক প্রকল্পে আমি পরিবর্তন করেছি:

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("your-host-ip");
factory.setUsername("username-you-created");
factory.setPassword("username-password");

        

এটি করে আপনি নিজের তৈরি ব্যবহারকারী হিসাবে একটি নির্দিষ্ট হোস্টকে সংযুক্ত করছেন। এটা আমার জন্য কাজ করে!


0

বসন্ত বুট অ্যাপ্লিকেশন-এর পাসওয়ার্ডের শেষে (স্প্রিং.আরবিটমেক.পাসওয়ার্ড = খরগোশ) খালি জায়গার কারণে আমি এই সমস্যার মুখোমুখি হয়েছি rop আশা করি এই চেকলিস্টটি এই সমস্যার মুখোমুখি কাউকে সহায়তা করবে।


-4

লোকালহোস্টে সংযোগ কারখানা বা সংযোগ হোস্টনাম সেট করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.