1、使用HTTP協議報錯500。排查思路:
1). 是不是有tcp的producer在發送。
2). 是不是有大量的非法字符。建議單獨建一個topic給http,然後再進行測試。
2、報沒有權限:
1). 如果是主賬號:確保GID和topic都是主賬號創建;
2). 如果是子賬號:確保GID是子賬號創建,並且topic授權這個ak使用。
3.學會查看日誌:
ons.log日誌保存路徑:/{user.home}/logs/ons.log,其中{user.home}是指啓動當前 Java 進程的用戶的根目錄
4.消息訂閱類問題分析思路
1). 先看下程序是否正常運行,如有異常排查日誌。如正常運行,檢查消費端的消息堆積和訂閱關係。如訂閱關係不一致,糾正。如有堆積,看具體哪個消費端堆積,可以看堆棧及打jstack來分析。https://help.aliyun.com/knowledge_detail/54347.html
2). 消息接收不到,查看消息ID,通過消息查詢去判斷消息是否接收,如果顯示”至少訂閱一次“說明消息肯定被訂閱到了,如果消息軌跡看不到,應該是消息軌跡公測存在一定的缺陷,以消息查詢結果爲準。
5.不保證消息一定不重複,但是保證消息一定不丟失。
6.事務消息會回查頻率5秒一次
7..net僅支持Windows系統
8.消息驗證中Tag是不生效的。
9.刪除監控警報需要在所有賬號下進行查看。
10.產品不建議再做二次封裝,本身.net SDK的兼容性就不是太好。如果是一定要封裝,請先使用SDK測試調通了再進行封裝。務必使用64位的方式封裝。
- .net TCP協議開發,程序必須編譯爲64位,才能夠調用,32位不支持
12.一個CID在消費的時候不管多少個進程、線程、機器,只能用一個tag,否則就會導致消息被不可預期的過濾掉。
13.客戶端堆積的是指一次都未消費的堆積消息量,不包含重試的消息。另外報警必須保證消費端在線。
- topic的消息類型爲順序消息,則不支持定時/延時消息和事務消息。
15.主賬號授權給主賬號只能通過STS
16.使用老版本的默認實例會導致發送錯誤,需要修改NAMESER_ADDR。
17..net中文亂碼問題:
添加編碼解碼類:
/// 編碼解碼測試類
/// </summary>
public class base6tstring {
public static string ToBase64String(string value)
{
if (value == null || value == "")
{
return "";
}
byte[] bytes = Encoding.UTF8.GetBytes(value);
return Convert.ToBase64String(bytes);
}
public static string UnBase64String(string value)
{
if (value == null || value == "")
{
return "";
}
byte[] bytes = Convert.FromBase64String(value);
return Encoding.UTF8.GetString(bytes);
}
}
發送:
string myString = "Example message body測試";
myString = base6tstring.ToBase64String(myString);
Message msg = new Message(factoryInfo.getPublishTopics(), "tagA", myString);
接收:
Byte[] text = Encoding.Default.GetBytes(value.getBody());
string s = System.Text.Encoding.UTF8.GetString(text, 0, text.Length);
Console.WriteLine(base6tstring.UnBase64String(s));
return ons.Action.CommitMessage;