rabbitmqの紹介:
MQはメッセージキューのフルネームです。メッセージキュー(MQ)は、アプリケーションとアプリケーション間の通信方法です。アプリケーションは、それらをリンクするための専用の接続なしに、キューに掲載されたメッセージ(アプリケーションのデータ)を読み書きすることで通信します。メッセージ配信とは、互いに直接呼び出すのではなく、メッセージ内のデータを送信することにより、プログラム間の通信を指します。通常、リモートプロシージャコールなどの手法で直接通話が使用されます。キューイングとは、キューを介して通信するアプリケーションを指します。キューを使用すると、受信と送信アプリケーションの両方が同時に実行されるという要件が排除されます。その中で、より成熟したMQ製品はIBM WebSphere MQです。
このセクションの内容は、ユーザーが登録すると、メールアドレスが最初にrabbitmqキューに保存され、次に登録を成功させるためにユーザーに返送されることです。次に、メッセージキューの受信者がキューからメッセージを取得し、ユーザーにメールを送信します。
1。rabbitmqの紹介
rabbitmqについて以前に知らない場合は、Rabbitmq Quick(クイックマニュアル)をご覧ください。
1。MacにRabbitMQのインストール。
2。rabbitmqの簡単な紹介。
プロデューサー:交換にメッセージを送信する責任があります。
交換:特定のポリシーによると、指定されたキューにメッセージを保存する責任があります。
キュー:メッセージの保存を担当します。
消費者:キューからメッセージを抽出する責任があります。
バインディング:交換とキューの協会マッピングを担当します。交換とキューは多くの関係です。
2。春のRabbitmqの実装
1.依存関係パッケージを紹介します。
<Dependency> GroupId> org.springframework.amqp </groupId> <artifactid> spring-amqp </artifactid> <version> 1.6.0.release </version> </dependency> <depenting> <バージョン> 1.6.0.Release </version> </dependency>
2。RabbitMQ構成ファイル。
<?xml version = "1.0" encoding = "utf-8"?> <beans:beans xmlns = "http://www.springframework.org/schema/rabbit" xmlns:beans = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation = "http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xd "> <! - 1。接続ファクトリを構成します。ホスト、ポート、ユーザー名、パスワード、次にlocalHost:5672、guest /guest-> <! - <connection-factory id = "connectionfactory" /> - > <connection-factory id = "connectionfactory" host = "localhost" port = "5672" username = "everseeker" password = "333" /> <!-2。キューを組み合わせたキュー、交換、およびバインディングを構成 - > <! - キューと交換では、耐久性のある重要な属性があります。 - > <! - リスナー-Containerには、AUTOにデフォルトであることを確認する属性があります。つまり、消費者はメッセージを正常に処理した後に返信する必要があります。消費者プログラムが例外またはクラッシュに遭遇した場合、メッセージはキューに戻ります - > <admin connectionfactory = "connectionfactory" /> <queue id = "useralertemailqueue" name = "user.alerts.email true - > <! - 標準AMQPエクスチェンジには4種類の標準的なAMQPエクスチェンジがあります。実際のニーズに応じて、直接、トピック、ヘッダー、ファンアウトを選択します。 - > <! - 直接:メッセージのルーティングキーがビングのルーティングキーと直接一致する場合、メッセージはキューにルーティングされます。 - > <! - トピック:メッセージのルーティングキーがビングのルーティングキーと一致する場合、メッセージはキューにルーティングされます。 - > <! - ヘッダー:メッセージパラメーターテーブルのヘッダー情報と値がバインディングパラメーターテーブルに一致する場合、メッセージはキューにルーティングされます。 - > <! - ファンアウト:メッセージのルーティングキーとパラメーターテーブルのヘッダー/値が何であれ、メッセージはキューにルーティングされます。 - > <direct-exchange name = "user.alert.email.exchange" durable = "true"> <bindings> <binding queue = "user.alerts.email"/> <! - デフォルトのルーティングキーはキューの名前と同じです - > </bindings> </direct-exchange> <バインディングキュー= "user.alerts.cellphone"/> </bindings> </direct-exchange> <! - 3。 rabbittemplateを構成してメッセージを送信します - > <テンプレートid = "rabbittemplate" connection-factory = "connectionfactory" /> <! - 4。リスナーコンテナとリスナーを構成してメッセージを受信します - > <bean:bean id = "userlistener" /> <リスナー - コントキャインターファクトリー= "connectionfactory" authone = "auto"> <リスナーref = "userlerttoemail" queues = "userarertemailqueue" method = "handleUseralertTocellphone" queues = "useralertcellphonequeue"/> </ristener-container> </beans:beans>
Connection -Factoryを構成し、デフォルトのゲスト/ゲストアカウントパスワードを使用する場合、org.springframework.amqp.amqpauthenticationexception:com.rabbitmq.client.authenticationfailureexception:access_refused-認証メカニズムプレーンを使用してログインが拒否されました。詳細については、ブローカーLogFileを参照してください。解決策は、管理者の特権を持つ新しいユーザーを作成し、仮想ホストへのアクセスを許可することです。
手順は次のとおりです。
1。http:// localhost:15672/を開く
2。管理者 - >ユーザー、新しいユーザー、管理者の権限を作成します。
3.仮想ホスト、新しいユーザーを設定してアクセスを許可します。
3.プロデューサーは交換にメッセージを送信します。
@service( "useralertservice")パブリッククラスuseralertserviceimpl useralertservice {private rabbittemplate rabbit; @autowired public useralertserviceimpl(rabbittemplate rabbit){this.rabbit = rabbit; } public void senduseralertToeMail(ユーザーユーザー){// convertandSend(String Exchange、String RoutingKey、Object Object)、オブジェクトオブジェクトをメッセージオブジェクトにカプセル化し、rabbit.convertandsend( "user.alert.email.exchange"、 "user.alerts.email"、user、user) }} 4.メッセージを受信するようにコンシューマーを構成します。
public class useralerthandler {public void handleUserAralerttoeMail(ユーザーユーザー){system.out.println(user);} 3. javax.mailからメールを送信します
1.依存関係パッケージを紹介します。
<Dependency> GroupId> Javax.Mail </groupId> <ArtifActid>メール</artifactid> <バージョン> 1.4.7 </version> </dependency>
2。メールサーバー情報を構成します。
@beanpublic mailsender mailsender(Environment env){javamailsenderimpl mailsender = new javamailsenderimpl(); // 163 Mailbox MailSender.sethost(env.getProperty( "MailServer.Host"))など、通常のメールボックス、非SSL認証などの場合の場合); mailsender.setport(integer.parseint(env.getProperty( "mailserver.port"))); mailsender.setusername(env.getProperty( "mailserver.username")); mailsender.setPassword(env.getProperty( "mailserver.password")); mailsender.setDefaultEncoding( "utf-8"); //メールサーバーがSSL認証を採用している場合、Gmail Mailbox、QQメールボックスプロパティProps = new Properties()などの次の構成を追加します。 props.put( "mail.smtp.auth"、 "true"); props.put( "mail.smtp.starttls.enable"、 "true"); props.put( "mail.smtp.socketfactory.class"、 "javax.net.ssl.sslsocketfactory"); props.put( "mail.smtp.socketfactory.port"、 "465"); mailsender.setjavamailproperties(props);メールセンダーを返します;} 3.メールを送信します。
@component( "usermailservice")パブリッククラスusermailserviceimplを実装していますusermailservice {private mailsender mailsender; @autowired public usermailserviceimpl(mailsender mailsender){this.mailsender = mailsender; } public void sendsimpleusermail(string to、user user){simplemailmessage message = new simplemailmessage(); message.setfrom( "[email protected]"); message.setto(to); message.setsubject(user.getusername() + "メッセージ確認"); message.settext(user.tostring()); mailsender.send(メッセージ); }} 4.消費者は送信電子メールメソッドを呼び出すことができます。
1。参考文献:春の実践実践(第4版)。
2。完全なコードはGitHubにあります。アドレス:https://github.com/everseeker0307/register。
上記は、Spring Learning Notes 3の電子メール機能を送信するメッセージキュー(Rabbitmq)です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!