RabbitMQ(六)之Exchange 交換機

2021-09-07 20:44:03 字數 2326 閱讀 9596

exchange:接收訊息,並根據路由鍵**訊息所繫結的佇列。

生產者產生訊息,把訊息投遞到交換機上,並且根據路由鍵把訊息繫結到相對應的佇列上。消費者從佇列裡面取得訊息進行處理。

name:交換機名稱

type:交換機型別 direct、topic、fanout、headers

durability:是否持久化 true為持久化

auto delect:當最後乙個繫結到exchange上的佇列刪除後,自動刪除exchange

internal:當前exchange是否用於rabbitmq內部使用,預設false

arguments:擴充套件引數,用於擴充套件amqp協議自製定義化使用

所有傳送到direct exchange的訊息被**到routekey 中指定的queue,**訊息的direct exchange 的routekey必須和指定的queue中的一致,否則不能傳送到queue。direct模式可以使用rabbitmq自帶的exchange:default exchange,所以不需要講exchange進行任何的binding操作,訊息傳遞時,routekey必須完全一致才會被佇列接受,否則該訊息會被拋棄。

生產者

public static void main(string args) throws ioexception, timeoutexception 

// 按順序關閉連線

channel.close();

connection.close();

} catch (ioexception e) catch (timeoutexception e)

}

消費者

public static void main(string args) 

} catch (ioexception e) catch (timeoutexception e) catch (interruptedexception e)

}

所有傳送到topic exchange的訊息被**到所有關心的routingkey中指定的topic的queue上。

exchange 將routingkey和某個topic進行模糊匹配,此時佇列需要繫結乙個topic。

匹配符號:

#:匹配乙個或多個詞

*:匹配乙個詞 例:

test.# 可以匹配 test.info、test.info.1、test.info.2

test.* 只可以匹配 test.info、test.error

生產者

public static void main(string args) throws ioexception, timeoutexception  catch (ioexception e)  catch (timeoutexception e) 

}

消費者

public static void main(string args) 

} catch (ioexception e) catch (timeoutexception e) catch (interruptedexception e)

}

不處理任何路由鍵,直接將佇列繫結到交換機上。傳送到交換機的訊息都會被繫結到與該交換機繫結的佇列上。

生產者

public static void main(string args) throws ioexception, timeoutexception 

// 按順序關閉連線

channel.close();

connection.close();

} catch (ioexception e) catch (timeoutexception e)

}

消費者

public static void main(string args) 

} catch (ioexception e) catch (timeoutexception e) catch (interruptedexception e)

}

RabbitMQ(六)遠端連線

預設情況下,rabbitmq使用 guest 來連線本地 localhost 的server,當需要遠端連線時,就會失效。guest user can only connect via localhost 官方文件 如果必須使用 guest 使用者來進行遠端登入,需要修改配置 rabbitmqctl...

RabbitMQ(六)映象模式部署

一 伺服器資訊 2 集群資訊 三個節點 3 rabbitmq部署版本 3.7.16 二 部署 1 配置檔案 cat data rabbitmq.conf false listeners.tcp.default 5672default pass 12345678default user root ma...

Rabbitmq六大應用模式

1 簡單模式 helloworld 注釋 p 生產者 傳送資料 佇列 儲存資料 訊息緩衝器 c 消費者 獲取資料 生產者消費者均為應用程式。2 工作佇列 注釋 預設情況下,rabbitmq將按順序將每條訊息傳送給下乙個消費者。平均而言,每個消費者將獲得相同數量的訊息。這種分發訊息的方式稱為迴圈法。與...