透過 docker compose 啟動 RabbitMQ cluster

透過 docker compose 啟動 RabbitMQ cluster 最近在驗證整合 RabbitMQ cluster 的相關功能,常常要重新建立 RabbitMQ cluster,不過直接重新安裝 RabbitMQ cluster 還是覺得耗時,所以興起想要透過 docker compose 快速啟動

使用 jq 達成覆寫相同 json key 的效果

使用 jq 達成覆寫相同 json key 的效果 過去網站開發需要的 config 都是透過 Configuration in ASP.NET Core 來處理,雖然沒有用過其他工具,不過使用上沒遇到什麼問題,也就一直延用至今 過去

Ansible 變數不存在時指定預設值

Ansible 變數不存在時指定預設值 這個技巧之前就已經頻繁用在專案上了,原本也以為掌握度相當高,不過隔了好陣子沒有寫 ansible script,當下要用時卻又腦袋打

為進到 RabbitMQ 的 message 加上時間

為進到 RabbitMQ 的 message 加上時間 同事懷疑某個外部的 RabbitMQ 訊息有 delay 的狀況,想要釐清到底是外部 RabbitMQ 發送慢了還是 application 處理慢了,所以打算在 RabbitMQ 上為每個 message 加上進 queue 的時間,供

RabbitMQ 無法啟用想要的 plugin

RabbitMQ 無法啟用想要的 plugin 最近有個需求打算從 RabbitMQ 來進行,需要在 RabbitMQ 安裝額外的 plugin,但熟悉的指令卻出現意外的回應,快速筆記一下處理方式 執行指令 rabbitmq-plugins enable

取得 Kafka 與 zookeeper 版本

取得 Kafka 與 zookeeper 版本 雖然各個環境的軟體都是使用 ansible 腳本來安裝設定的,但畢竟各個環境的執行時間有些落差,後續可能有版本更新的狀況,所以還是直接至環境上

放大 kafka message size

放大 kafka message size 今天 prod 監控噴出大量 Message size too large 的錯誤訊息,訊息內容很明確:就是傳到 kafka 的 message 太大 (預設為 1048588 約 1MB),趁著這個機會紀錄一下 調整方式與使用方

取得 kafka 運行中的設定值

取得 kafka 運行中的設定值 kafka 的 config 預設儲存在 kafka 根目錄/config/server.properties ,一般情境下可以直接查看該檔案來取得設定值,但

RedLock.net 使用 StackExchange.Redis 的連線設定

RedLock.net 使用 StackExchange.Redis 的連線設定 最近專案發現在大量並行處理時會出現重複建立資料的狀況,因為這個專案本來就是設計來進行分散式作業,同時會建立好幾個 instance 在不同的

個別 HttpClient request 使用不同 Timeout 時間

個別 HttpClient request 使用不同 Timeout 時間 在透過 HttpClient 與 partner 介接時,常會使用同一個 named-client 來建立 instance,這也是可以共用 pool 與 存留期設定的推薦方式,雖然可以在 AddHttpClient 時加上

C# Socket 使用 proxy 連線

C# Socket 使用 proxy 連線 合作的 partner 在資料介接上提供 socket 的接口來確保資料更新的即時性,但為了有基本安全性所以只允許 whitelist server 可以連線,這在 production server 是很常見的限制,甚至

使用 goproxy

使用 goproxy 之前筆記 安裝 Redsocks 介紹到如何使用 Redsocks 來處理特定 request 需要導向上游 proxy 的情境,也提到因為 Squid 不支援 https 轉 http 、Mitmproxy 不支援 transparent 與 upstream 並行,所以當時

關於 ASP.NET Core ListenAnyIP

關於 ASP.NET Core ListenAnyIP 之前筆記 ASP.NET Core URLs 設定的套用順序 紀錄到 ASP.NET Core URL 幾種設定方式的套用順序,其中 WebHostBuilder 的 UseKestrel 方法,筆記使用的是 opts.ListenLocalhost(10000, opts =>opts.Protocols= HttpProtocols.Http1); 與 opts.ListenLocalhost(10001, opts => opts.UseHtt