我能够将rowkey和分区键插入Azure表存储:
TableOperation insertOperation = TableOperation.Insert(customer1); table.Execute(insertOperation); StoreKeyInQ(insertOperation);
// Create a new customer entity.
CustomerEntity customer1 = new CustomerEntity("URL", "Name"+Guid.NewGuid());
customer1.path = fullpath;
" CustomerEntity"如下:
public class CustomerEntity : TableEntity
{
public CustomerEntity(string ID, string Name)
{
this.PartitionKey = ID;
this.RowKey = Name;
}
public CustomerEntity() { }
public string path { get; set; }
}
我已编写代码来创建一个队列,如下所示:
public void StoreKeyInQ(TableOperation insertOperation)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
//craete a queue client
CloudQueueClient cloudQueueClient = storageAccount.CreateCloudQueueClient();
//retrive a reference to a container
CloudQueue cloudQueue = cloudQueueClient.GetQueueReference("myqueue");
//create the queue if does not exists
cloudQueue.CreateIfNotExists();
// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage(insertOperation); //Here is the error as "CloudQueueMessage" can't take a argument type "TableOperation"
queue.AddMessage(message);
}
如何解决此错误?如何传递" rowkey"和"分区"表存储到队列的关键?
EDIT:
我添加了这两行用于序列化就可以了吗?
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(customerEntity.GetType());
CloudQueueMessage message = new CloudQueueMessage(x.ToString());
我的队列显示如下;但是,不确定这是否正确?任何人都可以澄清 - 这是正确的吗?
答案 0 :(得分:0)
如何解决此错误?
如果我们要将消息插入队列中。我们可以得到操作队列
来自Get started with Azure Queue storage using .NET 的代码演示
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a queue.
CloudQueue queue = queueClient.GetQueueReference("myqueue");
// Create the queue if it doesn't already exist.
queue.CreateIfNotExists();
// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage("RowKey, PartitionKey ");
queue.AddMessage(message);
如何将表存储的“rowkey”和“partition”键传递给队列?
您可以将模型序列化为字符串,然后将其另存为消息,或者您可以使用自定义格式保存消息,例如消息格式:RowKey, PartitionKey
基本上,想法是将RowKey + PartitionKey存储在队列中,并创建一个辅助角色以从队列中检索密钥(RowKey + PartitionKey)。
如果您只想检索队列消息,我们可以使用许多便宜的方法,例如Webjob queue trigger或azure function queue trigger。
<强>更新强>
请尝试使用以下代码。
using Newtonsoft.Json;
CloudQueueMessage message = new CloudQueueMessage(JsonConvert.SerializeObject(customer1));
cloudQueue.AddMessage(message);
有关更多演示代码,请参阅SerializeObject或Deserialize对象。