通过nPgSQL接收NOTIFY有效负载
本文关键字:有效 负载 NOTIFY 接收 nPgSQL 通过 | 更新日期: 2023-09-27 18:09:53
目前,我使用NPGSQL
连接器将PostgreSQL数据库与我的应用程序连接在VB.Net
中。
我尝试使用PostgreSQL的LISTEN
和NOTIFY
功能将特定表的表更改NOTIFY
到前端。我从那次尝试中得到了积极的结果。我成功地从后端收到了前端的通知。为了达到这个目的,我尝试了以下方法:
Public Sub test()
Dim conn = New NpgsqlConnection("Server=servername;port=portNo; _
User Id=UID;pwd=PWD;DataBase=DB;")
conn.Open()
Dim command = New NpgsqlCommand("listen notifytest;", conn)
command.ExecuteNonQuery()
AddHandler conn.Notification, AddressOf NotificationSupportHelper
command = New NpgsqlCommand("notify notifytest;", conn)
command.ExecuteNonQuery()
End Sub
Private Sub NotificationSupportHelper(ByVal sender As Object, _
ByVal e As NpgsqlNotificationEventArgs)
'Notified here.
End Sub
这工作得很好,但是,PostgreSQL有一个全新的notify特性,其中notify可以有一个有效负载,如NOTIFY test, 'Hello world'
(其中Hello world是有效负载,换句话说,附加信息)。
我想在通知事件处理程序NotificationSupportHelper
中获得附加信息。所以为了得到它,我只是尝试访问NpgsqlNotificationEventArgs
的成员。但是我在那个尝试中失败了,因为它只包含PID和条件作为其成员。所以我决定看一下NPGQL文档,从那里,我得到了,没有办法在NPGSQL vers 1.0中获得额外的信息。但是他们在第二版(NPGSQL V 2.0)中为NpgsqlNotificationEventArgs
提供了一个额外的成员AdditionalInformation。但它目前也在建设中。这个属性将返回字符串。always为空(来自文档)。
所以我希望你们理解我想要完成的事情,我只需要在notification
被提出时在前端收到payload
。有人知道如何达到我的要求吗?是否有其他connector
可用而不是NPGSQL
来有效地处理前端的notification event
,这意味着在前端获得payload
。
以防其他人有这个问题。现在可以使用AdditionalInformation
属性。
Private Sub NotificationSupportHelper(ByVal sender As Object,
ByVal e As NpgsqlNotificationEventArgs)
MsgBox(e.Condition & " " & e.AdditionalInformation)
End Sub