我们需要能够根据构建环境设置表名。考虑以下类:
[DynamoDBTable("movies")]
public class Movie
{
[DynamoDBHashKey]
public string Title { get; set; }
[DynamoDBRangeKey(AttributeName = "Released")]
public DateTime ReleaseDate { get; set; }
public List<string> Genres { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在serverless.yml,表名可以这样设置:
functions:
update-movies:
environment:
tableName: movies-prod
Run Code Online (Sandbox Code Playgroud)
然后在代码中我们可以根据tableName变量中的表名动态加载表名。我们更喜欢使用DynamoDBContext而不是DynamoDBv2.DocumentModel(这里已经有了解决方案How do I dynamic change dynamodb tablename in c# using object persistence model)
在 Java 中是这样的:https : //medium.com/@onclouds/aws-lambda-use-different-dynamodb-tables-for-different-stages-5eda9f5378b2
我们如何强制 MassTransit 使用 HTTPS 而不是 AMQP 连接到 Azure 服务总线?
我们的应用程序位于企业防火墙后面。它需要从Azure主题发送/接收消息。我们更愿意使用 HTTPS 而不是 AMQP,这样更容易实现安全管理。
该应用程序有以下设置
从Azure服务总线文档中,我们应该能够将传输类型设置为AmqpWebSockets,它应该使用HTTPS进行通信。连接字符串如下所示:
Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=secret;TransportType=AmqpWebSockets
Run Code Online (Sandbox Code Playgroud)
(参考: https: //github.com/MicrosoftDocs/azure-docs/issues/14133)
如果我们使用TopicClientfrom Microsoft.Azure.ServiceBus 4.1.1,我们可以看到流量通过端口 443。示例代码是
class Program
{
public static async Task Main(string[] args)
{
var serviceBus = new ServiceBus();
await serviceBus.SendMessageAsync();
Console.ReadKey();
}
}
public class ServiceBus
{
public async Task SendMessageAsync()
{
const int numberOfMessages = 10;
topicClient = new TopicClient(ServiceBusConnectionString, TopicName);
// Send messages.
await SendMessagesAsync(numberOfMessages);
Console.ReadKey();
await topicClient.CloseAsync();
} …Run Code Online (Sandbox Code Playgroud)