队列动作处理的模式

时间:2013-07-30 09:40:36

标签: c# asp.net sql asp.net-mvc design-patterns

我有一个包含排队元素的表,用于与另一个系统的同步问题

TableName | PrimaryKey | Action    
--------------------------------
Products       15         Delete
Products       21         Create  
Categories      9         Update

TableName :目标SQL表的名称

PrimaryKey :相应表格中目标元素的PK值

操作:要执行的操作(示例:如果创建 - >推送创建远程系统中本地表产品的ID号为21的元素)

我需要的是一种在C#中正确处理此问题的方法。我正在考虑使用命令模式。 (ASP.Net MVC4 / C#)

您对此类问题有任何指导吗?

1 个答案:

答案 0 :(得分:1)

您可以使用that article中的建议和服务器端的进程队列。然后你的代码看起来像

create table TQueue (TableName nvarchar(128), PrimaryKey int, Action nvarchar(128))

create procedure sp_TQueue_Pop
as
begin
    declare @TableName nvarchar(128), @PrimaryKey int, @Action nvarchar(128)
    declare @temp_pop table (TableName nvarchar(128), PrimaryKey int, Action nvarchar(128))

    begin transaction

    select @TableName = null, @PrimaryKey = null, @Action = null

    delete top (1)
    from TQueue with (rowlock, readpast)
    output deleted.* into @temp_pop

    select @TableName = TableName, @PrimaryKey = PrimaryKey, @Action = Action
    from @temp_pop

    --================================================
    --  do your processing here
    --================================================

    select @TableName, @PrimaryKey, @Action
end

出列你刚刚执行的程序。

希望有所帮助。